for (ClassDescriptor appClass : appClassList) { ClassInfo classInfo = Global.getAnalysisCache().getClassAnalysis(ClassInfo.class, appClass); referencedClassSet.addAll(Arrays.asList(classInfo.getReferencedClassDescriptorList()));
while (!workList.isEmpty()) { ClassDescriptor classDesc = workList.removeFirst();  if (seen.contains(classDesc)) { continue; } seen.add(classDesc);  referencedClassSet.add(classDesc);    try { ClassInfo classInfo = Global.getAnalysisCache().getClassAnalysis(ClassInfo.class, classDesc); referencedClassSet.addAll(Arrays.asList(classInfo.getReferencedClassDescriptorList()));  if (classInfo.getSuperclassDescriptor() != null) { workList.addLast(classInfo.getSuperclassDescriptor()); }  for (ClassDescriptor ifaceDesc : classInfo.getInterfaceDescriptorList()) { workList.addLast(ifaceDesc); } } catch (CheckedAnalysisException e) { if (appClassSet.contains(classDesc)) {  throw e; } else {  bugReporter.logError("Error scanning " + classDesc + " for referenced classes", e); } }
	private void buildReferencedClassSet() throws CheckedAnalysisException {		// TODO: should drive progress dialog (scanning phase)		// TODO: should load superclasses to extract transitively referenced classes				referencedClassSet = new TreeSet<ClassDescriptor>();				referencedClassSet.addAll(appClassList);				for (ClassDescriptor appClass : appClassList) {			ClassInfo classInfo = Global.getAnalysisCache().getClassAnalysis(ClassInfo.class, appClass);			referencedClassSet.addAll(Arrays.asList(classInfo.getReferencedClassDescriptorList()));		}	}