Genéricos y varargs de Java

Me gustaría implementar una función con genéricos y varargs.

public class Question {
    public static <A> void doNastyThingsToClasses(Class<A> parent, Class<? extends A>... classes) {
        /*** something here ***/
    }
    public static class NotQuestion {
    }
    public static class SomeQuestion extends Question {
    }
    public static void main(String[] args) {
        doNastyThingsToClasses(Object.class, Question.class, SomeQuestion.class); // OK
        doNastyThingsToClasses(Question.class, SomeQuestion.class); // OK
        doNastyThingsToClasses(Question.class, Object.class, SomeQuestion.class); // compilation failure
    }
}

La intención aquí es afirmar que todos los parámetros pasados a esta función son objetos de clase que extienden la clase dada como primer parámetro. Entonces, las dos primeras líneas del método principal se compilarían y la tercera generaría un error.

Mi pregunta es: ¿Por qué aparece el mensaje "Tipo de seguridad: se crea una matriz genérica de clase para un parámetro varargs" para las dos primeras líneas?

¿Me estoy perdiendo de algo?

Pregunta adicional ¿Cómo rediseñarlo para evitar que esta advertencia se muestre en cada línea que llama a la función "doNastyThingsToClasses"? Puedo cambiarlo a "doNastyThingsToClasses (Class <A> parent, Class <?> ... classes)" y deshacerme de las advertencias, pero esto también elimina la comprobación del tipo de tiempo de compilación --- no es tan bueno si quisiera Asegure el uso correcto de esta función. ¿Alguna mejor solución?

Respuestas a la pregunta(6)

Su respuesta a la pregunta