test_class.file: base/lang/src/test/java/leap/lang/TypesTest.java
test_class.identifier: TypesTest
test_class.superclass: extends TestCase
test_case.body: @Test
      public void testGenericTypeLost() throws Exception {
          Method list = SubSub.class.getMethod("list");
          assertEquals(String.class, Types.getActualTypeArgument(SubSub.class, list.getGenericReturnType()));
  
      }
test_case.class_method_signature: TypesTest.testGenericTypeLost()
test_case.full_signature: @Test public void testGenericTypeLost()
test_case.identifier: testGenericTypeLost
test_case.invocations: getMethod assertEquals getActualTypeArgument getGenericReturnType
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGenericTypeLost()
focal_class.declarator: EMPTY_TYPES = new Type[] {}
focal_class.modifier: protected static final
focal_class.original_string: protected static final Type[] EMPTY_TYPES = new Type[] {};
focal_class.type: Type[]
focal_class.var_name: EMPTY_TYPES
focal_class.file: base/lang/src/main/java/leap/lang/Types.java
focal_class.identifier: Types
focal_class.class_method_signature: Types.getTypeInfo(Class<?> type)
focal_class.full_signature: public static TypeInfo getTypeInfo(Class<?> type)
focal_class.identifier: getTypeInfo
focal_class.modifiers: public static
focal_class.parameters: (Class<?> type)
focal_class.return: TypeInfo
focal_class.signature: TypeInfo getTypeInfo(Class<?> type)
focal_class.class_method_signature: Types.getTypeInfo(Class<?> type,Type genericType)
focal_class.full_signature: public static TypeInfo getTypeInfo(Class<?> type,Type genericType)
focal_class.identifier: getTypeInfo
focal_class.modifiers: public static
focal_class.parameters: (Class<?> type,Type genericType)
focal_class.return: TypeInfo
focal_class.signature: TypeInfo getTypeInfo(Class<?> type,Type genericType)
focal_class.class_method_signature: Types.isSimpleType(Class<?> type,Type genericType)
focal_class.full_signature: public static boolean isSimpleType(Class<?> type,Type genericType)
focal_class.identifier: isSimpleType
focal_class.modifiers: public static
focal_class.parameters: (Class<?> type,Type genericType)
focal_class.return: boolean
focal_class.signature: boolean isSimpleType(Class<?> type,Type genericType)
focal_class.class_method_signature: Types.isCollectionType(Class<?> type, Type genericType)
focal_class.full_signature: public static boolean isCollectionType(Class<?> type, Type genericType)
focal_class.identifier: isCollectionType
focal_class.modifiers: public static
focal_class.parameters: (Class<?> type, Type genericType)
focal_class.return: boolean
focal_class.signature: boolean isCollectionType(Class<?> type, Type genericType)
focal_class.class_method_signature: Types.getElementType(Class<?> type, Type genericType)
focal_class.full_signature: public static Class<?> getElementType(Class<?> type, Type genericType)
focal_class.identifier: getElementType
focal_class.modifiers: public static
focal_class.parameters: (Class<?> type, Type genericType)
focal_class.return: Class<?>
focal_class.signature: Class<?> getElementType(Class<?> type, Type genericType)
focal_class.class_method_signature: Types.getTypeArgument(Type genericType)
focal_class.full_signature: public static Type getTypeArgument(Type genericType)
focal_class.identifier: getTypeArgument
focal_class.modifiers: public static
focal_class.parameters: (Type genericType)
focal_class.return: Type
focal_class.signature: Type getTypeArgument(Type genericType)
focal_class.class_method_signature: Types.getTypeArguments(Type genericType)
focal_class.full_signature: public static Type[] getTypeArguments(Type genericType)
focal_class.identifier: getTypeArguments
focal_class.modifiers: public static
focal_class.parameters: (Type genericType)
focal_class.return: Type[]
focal_class.signature: Type[] getTypeArguments(Type genericType)
focal_class.class_method_signature: Types.getActualTypeArgument(Class<?> declaringClass, Type genericType)
focal_class.full_signature: public static Class<?> getActualTypeArgument(Class<?> declaringClass, Type genericType)
focal_class.identifier: getActualTypeArgument
focal_class.modifiers: public static
focal_class.parameters: (Class<?> declaringClass, Type genericType)
focal_class.return: Class<?>
focal_class.signature: Class<?> getActualTypeArgument(Class<?> declaringClass, Type genericType)
focal_class.class_method_signature: Types.getActualType(Class<?> declaringClass, Type type)
focal_class.full_signature: public static Class<?> getActualType(Class<?> declaringClass, Type type)
focal_class.identifier: getActualType
focal_class.modifiers: public static
focal_class.parameters: (Class<?> declaringClass, Type type)
focal_class.return: Class<?>
focal_class.signature: Class<?> getActualType(Class<?> declaringClass, Type type)
focal_class.class_method_signature: Types.getActualType(Type type, TypeVariable var)
focal_class.full_signature: protected static Class<?> getActualType(Type type, TypeVariable var)
focal_class.identifier: getActualType
focal_class.modifiers: protected static
focal_class.parameters: (Type type, TypeVariable var)
focal_class.return: Class<?>
focal_class.signature: Class<?> getActualType(Type type, TypeVariable var)
focal_class.class_method_signature: Types.getActualTypeArgument(Type genericType)
focal_class.full_signature: public static Class<?> getActualTypeArgument(Type genericType)
focal_class.identifier: getActualTypeArgument
focal_class.modifiers: public static
focal_class.parameters: (Type genericType)
focal_class.return: Class<?>
focal_class.signature: Class<?> getActualTypeArgument(Type genericType)
focal_class.class_method_signature: Types.getActualTypeArguments(Type genericType)
focal_class.full_signature: public static Class<?>[] getActualTypeArguments(Type genericType)
focal_class.identifier: getActualTypeArguments
focal_class.modifiers: public static
focal_class.parameters: (Type genericType)
focal_class.return: Class<?>[]
focal_class.signature: Class<?>[] getActualTypeArguments(Type genericType)
focal_class.class_method_signature: Types.getActualType(Type type)
focal_class.full_signature: public static Class<?> getActualType(Type type)
focal_class.identifier: getActualType
focal_class.modifiers: public static
focal_class.parameters: (Type type)
focal_class.return: Class<?>
focal_class.signature: Class<?> getActualType(Type type)
focal_class.class_method_signature: Types.getActualTypes(Type[] types)
focal_class.full_signature: public static Class<?>[] getActualTypes(Type[] types)
focal_class.identifier: getActualTypes
focal_class.modifiers: public static
focal_class.parameters: (Type[] types)
focal_class.return: Class<?>[]
focal_class.signature: Class<?>[] getActualTypes(Type[] types)
focal_class.class_method_signature: Types.isAssignable(Type type, Type toType)
focal_class.full_signature: public static boolean isAssignable(Type type, Type toType)
focal_class.identifier: isAssignable
focal_class.modifiers: public static
focal_class.parameters: (Type type, Type toType)
focal_class.return: boolean
focal_class.signature: boolean isAssignable(Type type, Type toType)
focal_class.class_method_signature: Types.getTypeArguments(Type type, Class<?> toClass)
focal_class.full_signature: static Map<TypeVariable<?>, Type> getTypeArguments(Type type, Class<?> toClass)
focal_class.identifier: getTypeArguments
focal_class.modifiers: static
focal_class.parameters: (Type type, Class<?> toClass)
focal_class.return: Map<TypeVariable<?>, Type>
focal_class.signature: Map<TypeVariable<?>, Type> getTypeArguments(Type type, Class<?> toClass)
focal_class.class_method_signature: Types.getRawType(Type type, Type assigningType)
focal_class.full_signature: static Class<?> getRawType(Type type, Type assigningType)
focal_class.identifier: getRawType
focal_class.modifiers: static
focal_class.parameters: (Type type, Type assigningType)
focal_class.return: Class<?>
focal_class.signature: Class<?> getRawType(Type type, Type assigningType)
focal_class.class_method_signature: Types.getTypeArguments(Type type, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.full_signature: private static Map<TypeVariable<?>, Type> getTypeArguments(Type type, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.identifier: getTypeArguments
focal_class.modifiers: private static
focal_class.parameters: (Type type, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.return: Map<TypeVariable<?>, Type>
focal_class.signature: Map<TypeVariable<?>, Type> getTypeArguments(Type type, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.class_method_signature: Types.getTypeArguments(ParameterizedType parameterizedType, Class<?> toClass,
  	        Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.full_signature: private static Map<TypeVariable<?>, Type> getTypeArguments(ParameterizedType parameterizedType, Class<?> toClass,
  	        Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.identifier: getTypeArguments
focal_class.modifiers: private static
focal_class.parameters: (ParameterizedType parameterizedType, Class<?> toClass,
  	        Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.return: Map<TypeVariable<?>, Type>
focal_class.signature: Map<TypeVariable<?>, Type> getTypeArguments(ParameterizedType parameterizedType, Class<?> toClass,
  	        Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.class_method_signature: Types.getTypeArguments(Class<?> cls, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.full_signature: private static Map<TypeVariable<?>, Type> getTypeArguments(Class<?> cls, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.identifier: getTypeArguments
focal_class.modifiers: private static
focal_class.parameters: (Class<?> cls, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.return: Map<TypeVariable<?>, Type>
focal_class.signature: Map<TypeVariable<?>, Type> getTypeArguments(Class<?> cls, Class<?> toClass, Map<TypeVariable<?>, Type> subtypeVarAssigns)
focal_class.class_method_signature: Types.determineTypeArguments(Class<?> cls, ParameterizedType superType)
focal_class.full_signature: public static Map<TypeVariable<?>, Type> determineTypeArguments(Class<?> cls, ParameterizedType superType)
focal_class.identifier: determineTypeArguments
focal_class.modifiers: public static
focal_class.parameters: (Class<?> cls, ParameterizedType superType)
focal_class.return: Map<TypeVariable<?>, Type>
focal_class.signature: Map<TypeVariable<?>, Type> determineTypeArguments(Class<?> cls, ParameterizedType superType)
focal_class.class_method_signature: Types.mapTypeVariablesToArguments(Class<T> cls, ParameterizedType parameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.full_signature: private static void mapTypeVariablesToArguments(Class<T> cls, ParameterizedType parameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.identifier: mapTypeVariablesToArguments
focal_class.modifiers: private static
focal_class.parameters: (Class<T> cls, ParameterizedType parameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.return: void
focal_class.signature: void mapTypeVariablesToArguments(Class<T> cls, ParameterizedType parameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.class_method_signature: Types.getClosestParentType(Class<?> cls, Class<?> superClass)
focal_class.full_signature: private static Type getClosestParentType(Class<?> cls, Class<?> superClass)
focal_class.identifier: getClosestParentType
focal_class.modifiers: private static
focal_class.parameters: (Class<?> cls, Class<?> superClass)
focal_class.return: Type
focal_class.signature: Type getClosestParentType(Class<?> cls, Class<?> superClass)
focal_class.class_method_signature: Types.isAssignable(Type type, Type toType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.full_signature: private static boolean isAssignable(Type type, Type toType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.identifier: isAssignable
focal_class.modifiers: private static
focal_class.parameters: (Type type, Type toType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.return: boolean
focal_class.signature: boolean isAssignable(Type type, Type toType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.class_method_signature: Types.isAssignable(Type type, Class<?> toClass)
focal_class.full_signature: private static boolean isAssignable(Type type, Class<?> toClass)
focal_class.identifier: isAssignable
focal_class.modifiers: private static
focal_class.parameters: (Type type, Class<?> toClass)
focal_class.return: boolean
focal_class.signature: boolean isAssignable(Type type, Class<?> toClass)
focal_class.class_method_signature: Types.isAssignable(Type type, ParameterizedType toParameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.full_signature: private static boolean isAssignable(Type type, ParameterizedType toParameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.identifier: isAssignable
focal_class.modifiers: private static
focal_class.parameters: (Type type, ParameterizedType toParameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.return: boolean
focal_class.signature: boolean isAssignable(Type type, ParameterizedType toParameterizedType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.class_method_signature: Types.isAssignable(Type type, GenericArrayType toGenericArrayType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.full_signature: private static boolean isAssignable(Type type, GenericArrayType toGenericArrayType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.identifier: isAssignable
focal_class.modifiers: private static
focal_class.parameters: (Type type, GenericArrayType toGenericArrayType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.return: boolean
focal_class.signature: boolean isAssignable(Type type, GenericArrayType toGenericArrayType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.class_method_signature: Types.isAssignable(Type type, WildcardType toWildcardType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.full_signature: private static boolean isAssignable(Type type, WildcardType toWildcardType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.identifier: isAssignable
focal_class.modifiers: private static
focal_class.parameters: (Type type, WildcardType toWildcardType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.return: boolean
focal_class.signature: boolean isAssignable(Type type, WildcardType toWildcardType, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.class_method_signature: Types.isAssignable(Type type, TypeVariable<?> toTypeVariable, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.full_signature: private static boolean isAssignable(Type type, TypeVariable<?> toTypeVariable, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.identifier: isAssignable
focal_class.modifiers: private static
focal_class.parameters: (Type type, TypeVariable<?> toTypeVariable, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.return: boolean
focal_class.signature: boolean isAssignable(Type type, TypeVariable<?> toTypeVariable, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.class_method_signature: Types.substituteTypeVariables(Type type, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.full_signature: private static Type substituteTypeVariables(Type type, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.identifier: substituteTypeVariables
focal_class.modifiers: private static
focal_class.parameters: (Type type, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.return: Type
focal_class.signature: Type substituteTypeVariables(Type type, Map<TypeVariable<?>, Type> typeVarAssigns)
focal_class.class_method_signature: Types.getImplicitBounds(TypeVariable<?> typeVariable)
focal_class.full_signature: static Type[] getImplicitBounds(TypeVariable<?> typeVariable)
focal_class.identifier: getImplicitBounds
focal_class.modifiers: static
focal_class.parameters: (TypeVariable<?> typeVariable)
focal_class.return: Type[]
focal_class.signature: Type[] getImplicitBounds(TypeVariable<?> typeVariable)
focal_class.class_method_signature: Types.getImplicitUpperBounds(WildcardType wildcardType)
focal_class.full_signature: static Type[] getImplicitUpperBounds(WildcardType wildcardType)
focal_class.identifier: getImplicitUpperBounds
focal_class.modifiers: static
focal_class.parameters: (WildcardType wildcardType)
focal_class.return: Type[]
focal_class.signature: Type[] getImplicitUpperBounds(WildcardType wildcardType)
focal_class.class_method_signature: Types.getImplicitLowerBounds(WildcardType wildcardType)
focal_class.full_signature: static Type[] getImplicitLowerBounds(WildcardType wildcardType)
focal_class.identifier: getImplicitLowerBounds
focal_class.modifiers: static
focal_class.parameters: (WildcardType wildcardType)
focal_class.return: Type[]
focal_class.signature: Type[] getImplicitLowerBounds(WildcardType wildcardType)
focal_class.class_method_signature: Types.normalizeUpperBounds(Type[] bounds)
focal_class.full_signature: static Type[] normalizeUpperBounds(Type[] bounds)
focal_class.identifier: normalizeUpperBounds
focal_class.modifiers: static
focal_class.parameters: (Type[] bounds)
focal_class.return: Type[]
focal_class.signature: Type[] normalizeUpperBounds(Type[] bounds)
focal_class.class_method_signature: Types.getRawType(ParameterizedType parameterizedType)
focal_class.full_signature: private static Class<?> getRawType(ParameterizedType parameterizedType)
focal_class.identifier: getRawType
focal_class.modifiers: private static
focal_class.parameters: (ParameterizedType parameterizedType)
focal_class.return: Class<?>
focal_class.signature: Class<?> getRawType(ParameterizedType parameterizedType)
focal_class.class_method_signature: Types.Types()
focal_class.full_signature: protected  Types()
focal_class.identifier: Types
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.signature:  Types()
focal_method.body: public static Class<?> getActualTypeArgument(Class<?> declaringClass, Type genericType) {
          if(null == declaringClass) {
              return getActualTypeArgument(genericType);
          }else{
              return getActualType(declaringClass, getTypeArgument(genericType));
          }
      }
focal_method.class_method_signature: Types.getActualTypeArgument(Class<?> declaringClass, Type genericType)
focal_method.full_signature: public static Class<?> getActualTypeArgument(Class<?> declaringClass, Type genericType)
focal_method.identifier: getActualTypeArgument
focal_method.invocations: getActualTypeArgument getActualType getTypeArgument
focal_method.modifiers: public static
focal_method.parameters: (Class<?> declaringClass, Type genericType)
focal_method.return: Class<?>
focal_method.signature: Class<?> getActualTypeArgument(Class<?> declaringClass, Type genericType)