Java: Como substituir esse método genérico?

public <S extends T> List<S> save(Iterable<S> entities) {
        //...
}

Se eu usar o seguinte método para substituir

@Override
public List<MyType> save(Iterable<MyType> structures) {
    List<MyType> result = new ArrayList<>();
    //...
    return result;
}

Eu recebo seguinte erro:

method does not override or implement a method from a supertype

name clash: save(Iterable<MyType>) in MyTypeRepositoryImpl and <S>save(Iterable<S>) in SimpleJpaRepository have the same erasure, yet neither overrides the other
  where S,T are type-variables:
    S extends T declared in method <S>save(Iterable<S>)
    T extends Object declared in class SimpleJpaRepository

Como posso resolver isso? Eu não preciso que o método seja genérico e, na verdade, não deveria ser. O que quero dizer é que

@Override
public <S extends MyType> List<S> save(Iterable<S> structures) {
    List<S> result = new ArrayList<>();
    //...
    return result;
}

Não funcionará, pois o método pode criar um novo Objeto do MyType que não é "compatível" com o List.

Como posso fazer isso funcionar?

EDITAR:

Para esclarecimento. Estou tentando substituir os diferentes métodos save () dos dados Spring SimpleJpaRepository (que é estendido por QuerydslJpaRepository)

Definições de classe:

public class MyTypeRepositoryImpl
    extends QueryDslJpaRepository<MyType, Long>
    implements MyTypeRepository

@NoRepositoryBean
public interface MyTypeRepository
    extends JpaRepository<MyType, Long>,
    QueryDslPredicateExecutor<MyType> 

E isso (da Spring Data)

public class QueryDslJpaRepository<T, ID extends Serializable> 
extends SimpleJpaRepository<T, ID> 
implements QueryDslPredicateExecutor<T>

EDIT 2:

O método chama save (entidade MyType) para cada elemento e esse método contém a seguinte lógica:

entidade tem um campo que é únicoobtenha esse valor de campos e verifique se a entidade com esse valor já existese sim, use essa entidade (chamada para entityManager.merge) -> não funciona retorna MyType não Sse não criar um novo -> aqui novo objeto é criado. Não funciona com tipo genérico

Para 4. Eu posso apenas definir id = null e usar o objeto passado. Isso não funciona para 3.

Então estou muito confuso porque esse método tem essa assinatura. Isso torna inutilizável para mim e eu não entendo porque eu salvaria uma subclasse de T usando Ts DAO. Os métodos de salvaguarda são os únicos com. Todos os outros apenas usam T. Eu poderia apenas converter para S para compilar, mas isso também parece feio ... como qualquer outro tipo de T levaria a uma exceção.