public void analyzeSuperClasses(ClassInfo superclass) {
		while (superclass != null) {

			ClassIdentifier superident = Main.getClassBundle()
					.getClassIdentifier(superclass.getName());
			if (superident != null) {
				superident.addSubClass(this);
			} else {
				// all virtual methods in superclass are reachable now!
				String clazzType = ("L"
						+ superclass.getName().replace('.', '/') + ";")
						.intern();
				MethodInfo[] topmethods = superclass.getMethods();
				for (int i = 0; i < topmethods.length; i++) {
					int modif = topmethods[i].getModifiers();
					if (((Modifier.PRIVATE | Modifier.STATIC | Modifier.FINAL) & modif) == 0
							&& !topmethods[i].getName().equals("<init>")) {
						reachableReference(
								Reference.getReference(clazzType,
										topmethods[i].getName(),
										topmethods[i].getType()), true);
					}
				}
			}
			ClassInfo[] ifaces = superclass.getInterfaces();
			for (int i = 0; i < ifaces.length; i++)
				analyzeSuperClasses(ifaces[i]);
			superclass = superclass.getSuperclass();
		}
	}