package p; import java.util.Collections; import java.util.Map; class A extends Sup<String> { public A(Map<String, Integer> map) { Map<String, Integer> emptyMap= Collections.emptyMap(/*nada*/); method(emptyMap); method2(emptyMap); method3(emptyMap); new A(emptyMap); super.sup(emptyMap); Map<String, Integer> emptyMap2= emptyMap; emptyMap2= emptyMap; Object o= emptyMap; Map<? extends String, ?> emptyMap3= emptyMap; Integer first= emptyMap.values().iterator().next(); } void method(Map<String, Integer> map) { } void method2(Map<? extends String, ?> map) { } void method3(Object map) { } } class Sup<S> { <A extends S, B> void sup(Map<A, B> map) {} }