test_class.file: util/src/test/java/org/microbule/util/reflect/TypesTest.java
test_class.identifier: TypesTest
test_class.superclass: extends MicrobuleTestCase
test_case.body: @Test
      public void testGetTypeParameter() throws Exception {
          final Type type = MyType.class.getDeclaredField("map").getGenericType();
          assertEquals(String.class, Types.getTypeParameter(type, Map.class, 0));
          assertEquals(Integer.class, Types.getTypeParameter(type, Map.class, 1));
      }
test_case.class_method_signature: TypesTest.testGetTypeParameter()
test_case.full_signature: @Test public void testGetTypeParameter()
test_case.identifier: testGetTypeParameter
test_case.invocations: getGenericType getDeclaredField assertEquals getTypeParameter assertEquals getTypeParameter
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGetTypeParameter()
focal_class.file: util/src/main/java/org/microbule/util/reflect/Types.java
focal_class.identifier: Types
focal_class.class_method_signature: Types.getTypeParameter(Type subType, Class<?> superType, int index)
focal_class.full_signature: @SuppressWarnings("unchecked") public static Class<T> getTypeParameter(Type subType, Class<?> superType, int index)
focal_class.identifier: getTypeParameter
focal_class.modifiers: @SuppressWarnings("unchecked") public static
focal_class.parameters: (Type subType, Class<?> superType, int index)
focal_class.return: Class<T>
focal_class.signature: Class<T> getTypeParameter(Type subType, Class<?> superType, int index)
focal_class.class_method_signature: Types.Types()
focal_class.full_signature: private  Types()
focal_class.identifier: Types
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  Types()
focal_method.body: @SuppressWarnings("unchecked")
      public static <T> Class<T> getTypeParameter(Type subType, Class<?> superType, int index) {
          final Map<TypeVariable<?>, Type> arguments = TypeUtils.getTypeArguments(subType, superType);
          final TypeVariable<? extends Class<?>> variable = superType.getTypeParameters()[index];
          return (Class<T>) arguments.get(variable);
      }
focal_method.class_method_signature: Types.getTypeParameter(Type subType, Class<?> superType, int index)
focal_method.full_signature: @SuppressWarnings("unchecked") public static Class<T> getTypeParameter(Type subType, Class<?> superType, int index)
focal_method.identifier: getTypeParameter
focal_method.invocations: getTypeArguments getTypeParameters get
focal_method.modifiers: @SuppressWarnings("unchecked") public static
focal_method.parameters: (Type subType, Class<?> superType, int index)
focal_method.return: Class<T>
focal_method.signature: Class<T> getTypeParameter(Type subType, Class<?> superType, int index)