test_class.file: code/src/test/java/com/googlecode/cqengine/attribute/support/AbstractAttributeTest.java
test_class.identifier: AbstractAttributeTest
test_case.body: @Test(expected = IllegalStateException.class)
      public void testReadGenericObjectType_InvalidAttribute() throws Exception {
          AbstractAttribute.readGenericObjectType(InvalidAttribute.class, "foo");
      }
test_case.class_method_signature: AbstractAttributeTest.testReadGenericObjectType_InvalidAttribute()
test_case.full_signature: @Test(expected = IllegalStateException.class) public void testReadGenericObjectType_InvalidAttribute()
test_case.identifier: testReadGenericObjectType_InvalidAttribute
test_case.invocations: readGenericObjectType
test_case.modifiers: @Test(expected = IllegalStateException.class) public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testReadGenericObjectType_InvalidAttribute()
focal_class.declarator: objectType
focal_class.modifier: private final
focal_class.original_string: private final Class<O> objectType;
focal_class.type: Class<O>
focal_class.var_name: objectType
focal_class.declarator: attributeType
focal_class.modifier: private final
focal_class.original_string: private final Class<A> attributeType;
focal_class.type: Class<A>
focal_class.var_name: attributeType
focal_class.declarator: attributeName
focal_class.modifier: private final
focal_class.original_string: private final String attributeName;
focal_class.type: String
focal_class.var_name: attributeName
focal_class.declarator: cachedHashCode
focal_class.modifier: private final
focal_class.original_string: private final int cachedHashCode;
focal_class.type: int
focal_class.var_name: cachedHashCode
focal_class.file: code/src/main/java/com/googlecode/cqengine/attribute/support/AbstractAttribute.java
focal_class.identifier: AbstractAttribute
focal_class.interfaces: implements Attribute<O, A>
focal_class.class_method_signature: AbstractAttribute.AbstractAttribute()
focal_class.full_signature: public  AbstractAttribute()
focal_class.identifier: AbstractAttribute
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  AbstractAttribute()
focal_class.class_method_signature: AbstractAttribute.AbstractAttribute(String attributeName)
focal_class.full_signature: public  AbstractAttribute(String attributeName)
focal_class.identifier: AbstractAttribute
focal_class.modifiers: public
focal_class.parameters: (String attributeName)
focal_class.signature:  AbstractAttribute(String attributeName)
focal_class.class_method_signature: AbstractAttribute.AbstractAttribute(Class<O> objectType, Class<A> attributeType)
focal_class.full_signature: protected  AbstractAttribute(Class<O> objectType, Class<A> attributeType)
focal_class.identifier: AbstractAttribute
focal_class.modifiers: protected
focal_class.parameters: (Class<O> objectType, Class<A> attributeType)
focal_class.signature:  AbstractAttribute(Class<O> objectType, Class<A> attributeType)
focal_class.class_method_signature: AbstractAttribute.AbstractAttribute(Class<O> objectType, Class<A> attributeType, String attributeName)
focal_class.full_signature: protected  AbstractAttribute(Class<O> objectType, Class<A> attributeType, String attributeName)
focal_class.identifier: AbstractAttribute
focal_class.modifiers: protected
focal_class.parameters: (Class<O> objectType, Class<A> attributeType, String attributeName)
focal_class.signature:  AbstractAttribute(Class<O> objectType, Class<A> attributeType, String attributeName)
focal_class.class_method_signature: AbstractAttribute.getObjectType()
focal_class.full_signature: @Override public Class<O> getObjectType()
focal_class.identifier: getObjectType
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Class<O>
focal_class.signature: Class<O> getObjectType()
focal_class.class_method_signature: AbstractAttribute.getAttributeType()
focal_class.full_signature: @Override public Class<A> getAttributeType()
focal_class.identifier: getAttributeType
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Class<A>
focal_class.signature: Class<A> getAttributeType()
focal_class.class_method_signature: AbstractAttribute.getAttributeName()
focal_class.full_signature: @Override public String getAttributeName()
focal_class.identifier: getAttributeName
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getAttributeName()
focal_class.class_method_signature: AbstractAttribute.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: AbstractAttribute.equals(Object o)
focal_class.full_signature: @Override public boolean equals(Object o)
focal_class.identifier: equals
focal_class.modifiers: @Override public
focal_class.parameters: (Object o)
focal_class.return: boolean
focal_class.signature: boolean equals(Object o)
focal_class.class_method_signature: AbstractAttribute.canEqual(Object other)
focal_class.full_signature: public boolean canEqual(Object other)
focal_class.identifier: canEqual
focal_class.modifiers: public
focal_class.parameters: (Object other)
focal_class.return: boolean
focal_class.signature: boolean canEqual(Object other)
focal_class.class_method_signature: AbstractAttribute.hashCode()
focal_class.full_signature: @Override public int hashCode()
focal_class.identifier: hashCode
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int hashCode()
focal_class.class_method_signature: AbstractAttribute.calcHashCode()
focal_class.full_signature: protected int calcHashCode()
focal_class.identifier: calcHashCode
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int calcHashCode()
focal_class.class_method_signature: AbstractAttribute.readGenericObjectType(Class<?> attributeClass, String attributeName)
focal_class.full_signature: static Class<O> readGenericObjectType(Class<?> attributeClass, String attributeName)
focal_class.identifier: readGenericObjectType
focal_class.modifiers: static
focal_class.parameters: (Class<?> attributeClass, String attributeName)
focal_class.return: Class<O>
focal_class.signature: Class<O> readGenericObjectType(Class<?> attributeClass, String attributeName)
focal_class.class_method_signature: AbstractAttribute.readGenericAttributeType(Class<?> attributeClass, String attributeName)
focal_class.full_signature: static Class<A> readGenericAttributeType(Class<?> attributeClass, String attributeName)
focal_class.identifier: readGenericAttributeType
focal_class.modifiers: static
focal_class.parameters: (Class<?> attributeClass, String attributeName)
focal_class.return: Class<A>
focal_class.signature: Class<A> readGenericAttributeType(Class<?> attributeClass, String attributeName)
focal_method.body: static <O> Class<O> readGenericObjectType(Class<?> attributeClass, String attributeName) {
          try {
              ParameterizedType superclass = (ParameterizedType) attributeClass.getGenericSuperclass();
              @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
              Type actualType = superclass.getActualTypeArguments()[0];
              Class<O> cls;
              if (actualType instanceof ParameterizedType) {
                  ParameterizedType parameterizedType = (ParameterizedType)actualType;
                  @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
                  Class<O> actualClass = (Class<O>) parameterizedType.getRawType();
                  cls = actualClass;
              }
              else {
                  @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
                  Class<O> actualClass = (Class<O>) actualType;
                  cls = actualClass;
              }
              return cls;
          }
          catch (Exception e) {
              String attributeClassStr = attributeName.startsWith("<Unnamed attribute, class ") ? "" : " (" + attributeClass + ")";
              throw new IllegalStateException("Attribute '" + attributeName + "'" + attributeClassStr + " is invalid, cannot read generic type information from it. Attributes should typically EITHER be declared in code with generic type information as a (possibly anonymous) subclass of one of the provided attribute types, OR you can use a constructor of the attribute which allows the types to be specified manually.");
          }
      }
focal_method.class_method_signature: AbstractAttribute.readGenericObjectType(Class<?> attributeClass, String attributeName)
focal_method.full_signature: static Class<O> readGenericObjectType(Class<?> attributeClass, String attributeName)
focal_method.identifier: readGenericObjectType
focal_method.invocations: getGenericSuperclass getActualTypeArguments getRawType startsWith
focal_method.modifiers: static
focal_method.parameters: (Class<?> attributeClass, String attributeName)
focal_method.return: Class<O>
focal_method.signature: Class<O> readGenericObjectType(Class<?> attributeClass, String attributeName)