Pasar un parámetro resuelto en tiempo de ejecución a un método que tiene varios tipos de enlace, error de compilación

Tengo un método que se parece a esto:

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

Así que espero que la colección pasada sea una interfaz Enallable de implementación Enum. Funciona bien si tengo los tipos de Enum concretos en el tiempo de ejecución, pero escribí un método de prueba que crea una lista de Enum (implementando Marshallable) dinámicamente desde el objeto de la clase, y tengo problemas para pasar esta lista al método anterior.

@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);
...

La línea marcada dará error de compilación. No pude averiguar cómo pasar la lista sin cambiar las firmas de los métodos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta