¿Cómo se infiere el tipo genérico aquí?

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>();
}

Vi un código similar en google guava (como métodos de fábrica) para crear instancias de Hashmap sin mencionar los tipos genéricos. No entiendo cómo el programa anterior infiere lo genérico. Quiero decir, ¿cómo puede la función getHashMap entender el tipo? de mapa ya que no estoy pasando ningún tipo de información a la función.

Respuestas a la pregunta(3)

Su respuesta a la pregunta