Dicas de tipo Java na chamada de método genérico

Eu estou querendo saber qual é a maneira correta de chamar um método estático com uma assinatura como esta:

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

Fiquei tentado a chamar assim por algum motivo:

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

mas não foi compilado, a menos que eu o alterasse para:

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

Só estou me perguntando por que não precisava das dicas do lado direito. E, em vez disso, me deu erro de compilação. Ele diz que espera um ponto-e-vírgula após as dicas do lado direito. O segundo é uma maneira adequada de chamar o método? Alguém poderia lançar alguma luz, por favor?

questionAnswers(1)

yourAnswerToTheQuestion