Java genéricos para imponer el tipo de retorno del método abstracto

Tengo la siguiente situación:

abstract class X { abstract X someMethod (...) {...} }.

Ahora quiero restringir cualquier implementación de X para que su método 'someMethod' devuelva ese tipo de implementación en particular, no solo X:

class X1 extends X { X1 someMethod (...) {...} }.
class X1 extends X { X someMethod (...) {...} }.  //want this to be flagged as an error
class X2 extends X { X1 someMethod (...) {...} }.  //want this to be flagged as an error too

¿Es posible lograr esto usando los genéricos de Java?

EDITAR

Bueno. Solo hice la pregunta si / no y obtuve un "si". Mi culpa. Lo que realmente me interesó es "cómo escribo las declaraciones".

Respuestas a la pregunta(5)

Su respuesta a la pregunta