()
| 1043 | |
| 1044 | |
| 1045 | private ImmutableSet<Class<? super T>> getRawTypes() { |
| 1046 | final ImmutableSet.Builder<Class<?>> builder = ImmutableSet.builder(); |
| 1047 | new TypeVisitor() { |
| 1048 | @Override |
| 1049 | void visitTypeVariable(TypeVariable<?> t) { |
| 1050 | visit(t.getBounds()); |
| 1051 | } |
| 1052 | |
| 1053 | @Override |
| 1054 | void visitWildcardType(WildcardType t) { |
| 1055 | visit(t.getUpperBounds()); |
| 1056 | } |
| 1057 | |
| 1058 | @Override |
| 1059 | void visitParameterizedType(ParameterizedType t) { |
| 1060 | builder.add((Class<?>) t.getRawType()); |
| 1061 | } |
| 1062 | |
| 1063 | @Override |
| 1064 | void visitClass(Class<?> t) { |
| 1065 | builder.add(t); |
| 1066 | } |
| 1067 | |
| 1068 | @Override |
| 1069 | void visitGenericArrayType(GenericArrayType t) { |
| 1070 | builder.add(Types.getArrayClass(of(t.getGenericComponentType()).getRawType())); |
| 1071 | } |
| 1072 | }.visit(runtimeType); |
| 1073 | // Cast from ImmutableSet<Class<?>> to ImmutableSet<Class<? super T>> |
| 1074 | @SuppressWarnings({"unchecked", "rawtypes"}) |
| 1075 | ImmutableSet<Class<? super T>> result = (ImmutableSet) builder.build(); |
| 1076 | return result; |
| 1077 | } |
| 1078 | |
| 1079 | /** |
| 1080 | * Returns the type token representing the generic type declaration of {@code cls}. For example: |
no test coverage detected