Choque de nombres genéricos de Java, método no anulado correctamente

He visto diferentes preguntas con respecto a esto, pero todavía encuentro este tema muy confuso.

Todo lo que quiero hacer es tener una clase abstracta que implemente una interfaz, y tener una clase que extienda esta clase abstracta para que la clase difícil necesite implementargetKommune() ysetKommune(Kommune kommune), pero no el otro método, porque eso está en la clase abstracta.

Tengo la siguiente interfaz.

public interface KommuneFilter {

    <E extends AbstractKommune<?>> void addKommuneFromCurrentUser(E e);

    Kommune getKommune();

    void setKommune(Kommune kommune);
}

Y esta clase abstracta

public abstract class AbstractKommune<E extends AbstractKommune<?>> implements KommuneFilter {
    @PrePersist
    void addKommuneFromCurrentUser(E e) {
            Kommune k = e.getKommune();
    }
}

Y quiero usarlo así

    public class Person extends AbstractKommune<Person> {
        private Kommune kommune;             
        public void setKommune(Kommune kommune) {this.kommune=kommune;}
        public Kommune getKommune() {return kommune;}
    }

Sin embargo, me sale

Name clash: The method of has the same erasure of type but does not override it

¿Por qué no se anula correctamente?

ACTUALIZAR

Gracias a @Bozho, la solución es esta:

public interface KommuneFilter<E extends AbstractKommune<?>> {
    public void addKommuneFromCurrentUser(E e);
}

public abstract class AbstractKommune<E extends AbstractKommune<?>> implements KommuneFilter<E> 

public class Person extends AbstractKommune<Person>

Respuestas a la pregunta(2)

Su respuesta a la pregunta