class Sample<T extends Sample<T>> {
public static void main
(String[] args
) { Sample<?> a = null;
Sample<? extends Sample<?>> b = null;
Sample<? extends Sample<? extends Sample<?>>> c = null;
// every type is assignable to every other type
a = b;
b = a;
a = c;
c = a;
b = c;
c = b;
}
}
Y2xhc3MgU2FtcGxlPFQgZXh0ZW5kcyBTYW1wbGU8VD4+IHsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2FtcGxlPD8+IGEgPSBudWxsOwogICAgICAgIFNhbXBsZTw/IGV4dGVuZHMgU2FtcGxlPD8+PiBiID0gbnVsbDsKICAgICAgICBTYW1wbGU8PyBleHRlbmRzIFNhbXBsZTw/IGV4dGVuZHMgU2FtcGxlPD8+Pj4gYyA9IG51bGw7CiAgICAgICAgCiAgICAgICAgLy8gZXZlcnkgdHlwZSBpcyBhc3NpZ25hYmxlIHRvIGV2ZXJ5IG90aGVyIHR5cGUKICAgICAgICBhID0gYjsKICAgICAgICBiID0gYTsKICAgICAgICBhID0gYzsKICAgICAgICBjID0gYTsKICAgICAgICBiID0gYzsKICAgICAgICBjID0gYjsKICAgIH0KfQ==