Crear una interfaz genérica restringida a clase propia

Me gustaría crear una interfaz genérica para esas dos clases, pero no estoy seguro de cómo especificar los genéricos de la manera correcta.

public class ThingA implements Thing {
    public ThingA createCopy(ThingA original);
}

public class ThingB implements Thing {
    public ThingB createCopy(ThingB original);
}

Lo intenté esto.

public interface Thing<V extends Thing<V>> {
    public V createCopy(V original);

}

Pero todavía puedo hacer cosas como esta, que no deberían permitirse.

public class ThingB implements Thing<ThingA> {
    public ThingA createCopy(ThingA original);
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta