public Set<JavaClass> getReferencedClasses(JavaClass c) {
private Set<JavaClass> getReferencedClasses(JavaClass c) {
	public Set<JavaClass> getReferencedClasses(JavaClass c) {		Set<JavaClass> result = new HashSet<JavaClass>();		if (DEBUG_HIERARCHY) System.out.println("adding referenced classes for " + c.getClassName());		ConstantPool cp = c.getConstantPool();		Constant[] constants = cp.getConstantPool();		for (int i = 0; i < constants.length; i++) {			Constant co = constants[i];			if (co instanceof ConstantDouble || co instanceof ConstantLong)				i++;			if (co instanceof ConstantClass) {				String name = ((ConstantClass) co).getBytes(cp);				name = extractClassName(name);				if (DEBUG_HIERARCHY) System.out.println(i + " : " + name);				addNamedClass(result, name);			} else if (co instanceof ConstantCP) {				ConstantCP co2 = (ConstantCP) co;				ConstantNameAndType nt = (ConstantNameAndType) cp						.getConstant(co2.getNameAndTypeIndex());				String sig = ((ConstantUtf8) cp.getConstant(nt						.getSignatureIndex())).getBytes();				while (true) {					int j = sig.indexOf('L');					if (j == -1)						break;					int k = sig.indexOf(';', j);					String name = sig.substring(j + 1, k);					if (DEBUG_HIERARCHY) System.out.println(i + " : " + name);					addNamedClass(result, name);					sig = sig.substring(k + 1);				}			}		}		return result;	}