import java.io.*;
import java.lang.reflect.*;
import java.util.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
static class TypeToken<T> {
Type getType() {
ParameterizedType t = (ParameterizedType) getClass().getGenericSuperclass();
return t.getActualTypeArguments()[0];
}
}
public static void main
(String[] args
) { Collection<Integer> list = new ArrayList<>();
System.
out.
println(list.
getClass().
getGenericInterfaces()[0]);
TypeToken<Collection<Integer>> tt = new TypeToken<Collection<Integer>>() {};
System.
out.
println(tt.
getClass().
getGenericSuperclass()); System.
out.
println(tt.
getType()); }
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lio7CmltcG9ydCBqYXZhLnV0aWwuKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUgewogIHN0YXRpYyBjbGFzcyBUeXBlVG9rZW48VD4gewogICAgVHlwZSBnZXRUeXBlKCkgewogICAgICBQYXJhbWV0ZXJpemVkVHlwZSB0ID0gKFBhcmFtZXRlcml6ZWRUeXBlKSBnZXRDbGFzcygpLmdldEdlbmVyaWNTdXBlcmNsYXNzKCk7CiAgICAgIHJldHVybiB0LmdldEFjdHVhbFR5cGVBcmd1bWVudHMoKVswXTsKICAgIH0KICB9CgogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgIENvbGxlY3Rpb248SW50ZWdlcj4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgU3lzdGVtLm91dC5wcmludGxuKGxpc3QuZ2V0Q2xhc3MoKS5nZXRHZW5lcmljSW50ZXJmYWNlcygpWzBdKTsKCiAgICBUeXBlVG9rZW48Q29sbGVjdGlvbjxJbnRlZ2VyPj4gdHQgPSBuZXcgVHlwZVRva2VuPENvbGxlY3Rpb248SW50ZWdlcj4+KCkge307CgogICAgU3lzdGVtLm91dC5wcmludGxuKHR0LmdldENsYXNzKCkuZ2V0R2VuZXJpY1N1cGVyY2xhc3MoKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4odHQuZ2V0VHlwZSgpKTsKICB9Cn0K