Type baseType = type.getBaseType();
	private void resolveArrayClass(ArrayType type) throws ClassNotFoundException {		// FIXME: avoid repeated failed attempts to resolve		Type baseType = type.getBaseType();		if (baseType.getSignature().equals(JAVA_LANG_OBJECT_SIGNATURE)) {			// Special case: an array whose base type is java.lang.Object			// is a direct subtype of an array of Object with one less dimension.			// Except, a single dimensional array of Object is a			// a direct subtype of java.lang.Object.			ObjectType directBaseType;			if (type.getNumDimensions() == 1) {				directBaseType = (ObjectType) baseType;			} else {				directBaseType =					arrayTypeFromDimensionsAndBaseType(type.getNumDimensions() - 1, baseType);			}			addSuperclassLink(type, directBaseType);		} else {			Type elementType = type.getElementType(this);			if (elementType.isBasicType()) {				// All arrays of basic types are subtypes of java.lang.Object				ClassType javaLangObjectType = classTypeFromSignature(JAVA_LANG_OBJECT_SIGNATURE);				addSuperclassLink(type, javaLangObjectType);			} else {				// Array is a direct subtype of all arrays (same dimensionality)				// of supertypes of the element type.				ObjectType elementObjectType = (ObjectType) elementType;				resolveObjectType(elementObjectType);				for (Iterator<ObjectType> i = inheritanceGraph.successorIterator(elementObjectType); i.hasNext(); ) {					ObjectType elementSupertype = i.next();					ObjectType arraySupertype =						arrayTypeFromDimensionsAndBaseType(type.getNumDimensions(), elementSupertype);					addSuperclassLink(type, arraySupertype);				}			}		}		// All arrays implement Serializable and Cloneable		addInterfaceLink(type, classTypeFromSignature("Ljava/io/Serializable;"));		addInterfaceLink(type, classTypeFromSignature("Ljava/lang/Cloneable;"));		type.setState(ObjectType.KNOWN);	}