Como o tipo genérico é inferido aqui?

public static void main(String[] args) {
    Map<String, Map<Long, List<String>>> map = getHashMap();
}

static <K,V> Map<K,V> getHashMap()
{
    return new HashMap<K, V>();
}

Eu vi um código semelhante no google guava (como métodos de fábrica) para criar instâncias do Hashmap sem mencionar os tipos genéricos. Não entendo como o genérico está sendo inferido pelo programa acima. Quero dizer como a função getHashMap entende o tipo do mapa, pois não estou passando nenhuma informação de tipo para a função.

questionAnswers(3)

yourAnswerToTheQuestion