import java.util.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
static class A {}
static class SubclassOfA extends A {}
static class B {}
static class SubclassOfB extends B {}
try {
List<Map<A, B>> list = new ArrayList<>();
// Would be compiler error, but use raw types to pretend it's OK.
List
<Map
<? extends A,
? extends B
>> list2
= (List) list
;
Map<SubclassOfA, SubclassOfB> map = new HashMap<>();
list2.add(map);
list.get(0).put(new A(), new B());
SubclassOfA soa = map.keySet().iterator().next();
e.
printStackTrace(System.
out); }
}
}
ICAgIGltcG9ydCBqYXZhLnV0aWwuKjsKICAgIAogICAgLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCiAgICBjbGFzcyBJZGVvbmUgewogICAgICBzdGF0aWMgY2xhc3MgQSB7fQogICAgCiAgICAgIHN0YXRpYyBjbGFzcyBTdWJjbGFzc09mQSBleHRlbmRzIEEge30KICAgIAogICAgICBzdGF0aWMgY2xhc3MgQiB7fQogICAgCiAgICAgIHN0YXRpYyBjbGFzcyBTdWJjbGFzc09mQiBleHRlbmRzIEIge30KICAgIAogICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIExpc3Q8TWFwPEEsIEI+PiBsaXN0ID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAKICAgICAgICAgIC8vIFdvdWxkIGJlIGNvbXBpbGVyIGVycm9yLCBidXQgdXNlIHJhdyB0eXBlcyB0byBwcmV0ZW5kIGl0J3MgT0suCiAgICAgICAgICBMaXN0PE1hcDw/IGV4dGVuZHMgQSwgPyBleHRlbmRzIEI+PiBsaXN0MiA9IChMaXN0KSBsaXN0OwogICAgCiAgICAgICAgICBNYXA8U3ViY2xhc3NPZkEsIFN1YmNsYXNzT2ZCPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgICBsaXN0Mi5hZGQobWFwKTsKICAgIAogICAgICAgICAgbGlzdC5nZXQoMCkucHV0KG5ldyBBKCksIG5ldyBCKCkpOwogICAgCiAgICAgICAgICBTdWJjbGFzc09mQSBzb2EgPSBtYXAua2V5U2V0KCkuaXRlcmF0b3IoKS5uZXh0KCk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKFN5c3RlbS5vdXQpOwogICAgICAgIH0KICAgICAgfQogICAgfQo=