()
| 1099 | } |
| 1100 | |
| 1101 | private ImmutableSet<Class<? super T>> getRawTypes() { |
| 1102 | ImmutableSet.Builder<Class<?>> builder = ImmutableSet.builder(); |
| 1103 | new TypeVisitor() { |
| 1104 | @Override |
| 1105 | void visitTypeVariable(TypeVariable<?> t) { |
| 1106 | visit(t.getBounds()); |
| 1107 | } |
| 1108 | |
| 1109 | @Override |
| 1110 | void visitWildcardType(WildcardType t) { |
| 1111 | visit(t.getUpperBounds()); |
| 1112 | } |
| 1113 | |
| 1114 | @Override |
| 1115 | void visitParameterizedType(ParameterizedType t) { |
| 1116 | builder.add((Class<?>) t.getRawType()); |
| 1117 | } |
| 1118 | |
| 1119 | @Override |
| 1120 | void visitClass(Class<?> t) { |
| 1121 | builder.add(t); |
| 1122 | } |
| 1123 | |
| 1124 | @Override |
| 1125 | void visitGenericArrayType(GenericArrayType t) { |
| 1126 | builder.add(Types.getArrayClass(of(t.getGenericComponentType()).getRawType())); |
| 1127 | } |
| 1128 | }.visit(runtimeType); |
| 1129 | // Cast from ImmutableSet<Class<?>> to ImmutableSet<Class<? super T>> |
| 1130 | @SuppressWarnings({"unchecked", "rawtypes"}) |
| 1131 | ImmutableSet<Class<? super T>> result = (ImmutableSet) builder.build(); |
| 1132 | return result; |
| 1133 | } |
| 1134 | |
| 1135 | private boolean isOwnedBySubtypeOf(Type supertype) { |
| 1136 | for (TypeToken<?> type : getTypes()) { |
no test coverage detected