ClassDescriptor refClass = getClassDescriptor((Integer) constant.data[0]); referencedClassSet.add(refClass);
String className = getClassName((Integer) constant.data[0]); extractReferencedClassesFromSignature(referencedClassSet, className);
	private ClassDescriptor[] extractReferencedClasses() throws InvalidClassFileFormatException {		TreeSet<ClassDescriptor> referencedClassSet = new TreeSet<ClassDescriptor>();		for (Constant constant : constantPool) {			if (constant == null) {				continue;			}			if (constant.tag == IClassConstants.CONSTANT_Class) {				String className = getUtf8String((Integer)constant.data[0]);				referencedClassSet.add(new ClassDescriptor(className)); 			} else if (constant.tag == IClassConstants.CONSTANT_Methodref					|| constant.tag == IClassConstants.CONSTANT_Fieldref					|| constant.tag == IClassConstants.CONSTANT_InterfaceMethodref) {				// Get the target class name				ClassDescriptor refClass = getClassDescriptor((Integer) constant.data[0]);				referencedClassSet.add(refClass);								// Parse signature to extract class names				String signature = getSignatureFromNameAndType((Integer)constant.data[1]);				while (signature.length() > 0) {					int start = signature.indexOf('L');					if (start < 0) {						break;					}					signature = signature.substring(start);					int end = signature.indexOf(';');					if (end < 0) {						break;					}					referencedClassSet.add(new ClassDescriptor(signature.substring(1, end)));					signature = signature.substring(end + 1);				}			}		}		ClassDescriptor[] referencedClassDescriptorList = 			referencedClassSet.toArray(new ClassDescriptor[referencedClassSet.size()]);		return referencedClassDescriptorList;	}