I have the following situation :
abstract class X { abstract X someMethod (...) {...} }.
Now I want to constrain any implementation of X to
Yes. This is return type covariance.