Sugerencias de tipo Java sobre llamadas a métodos genéricos

Me pregunto cuál es la forma correcta de llamar a un método estático con una firma como esta:

public static <T1, T2> Map<T1, Set<T2>> aggregate(List<Map<String, Object>> list, 
        String colK, String colV) {
    ...
}

Tuve la tentación de llamarlo así por alguna razón:

Map<String, Set<Integer>> map = aggregate<String, Integer>(lData, "id", "ref");

pero no se compiló a menos que lo cambie a:

Map<String, Set<Integer>> map = aggregate(lData, "id", "ref");

Me pregunto por qué no necesitaba las pistas en el lado derecho. Y en su lugar me dio un error de compilación. Dice que espera un punto y coma después de las pistas en el lado derecho. ¿Es el segundo una forma adecuada de llamar al método? ¿Podría alguien arrojar algo de luz por favor?

Respuestas a la pregunta(1)

Su respuesta a la pregunta