Passando um parâmetro resolvido em tempo de execução para um método que possui vários tipos de ligação, erro de compilação

Eu tenho um método que se parece com isso:

public static <T extends Enum<T> & Marshallable> String foo(Collection<T> collection, Class<? extends Marshallable>... marshallables);

Então, eu estou esperando que a coleção passou a ser um Enum implementando a interface Marshallable. Ele funciona bem se eu tiver os tipos Enum concretos em tempo de execução, mas eu escrevi um método de teste que cria uma lista Enum (implementando Marshallable) dinamicamente a partir do objeto de classe, e estou tendo problemas para passar essa lista para o método acima.

@Test
public void fooTest() {
...
if (clazz.isEnum()) { // collection enum xml
    List<? extends Enum<? extends Marshallable>> enumList = (List<? extends Enum<? extends Marshallable>>) Arrays.asList(clazz.getEnumConstants());
--> String enumListXml = foo(enumList, clazz);
...

Linha marcada dará erro de compilação. Não consegui descobrir como passar a lista sem alterar as assinaturas de método.