}  if (!classScreener.matches(classDescriptor.toResourceName())) { if (DEBUG) { System.out.println("*** Excluded by class screener"); } continue;
	private void analyzeApplication()  {		int passCount = 0;		for (Iterator<AnalysisPass> i = executionPlan.passIterator(); i.hasNext(); ) {			AnalysisPass pass = i.next();			// Instantiate the detectors			Detector2[] detectorList = pass.instantiateDetector2sInPass(bugReporter);			// On first pass, we apply detectors to all classes referenced by the application classes.			// On subsequent passes, we apply detector only to application classes.			Collection<ClassDescriptor> classCollection = (passCount == 0) ? referencedClassSet : appClassList;			if (DEBUG) {				System.out.println("Pass " + (passCount + 1) + ": " + classCollection.size() + " classes");			}						progress.startAnalysis(classCollection.size());						for (ClassDescriptor classDescriptor : classCollection) {				if (DEBUG) {					System.out.println("Class " + classDescriptor);				}								currentClassName = ClassName.toDottedClassName(classDescriptor.getClassName());				notifyClassObservers(classDescriptor);								for (Detector2 detector : detectorList) {					if (DEBUG) {						System.out.println("Applying " + detector.getDetectorClassName() + " to " + classDescriptor);					}					try {						detector.visitClass(classDescriptor);					} catch (CheckedAnalysisException e) {						logRecoverableException(classDescriptor, detector, e);					} catch (AnalysisException e) {						logRecoverableException(classDescriptor, detector, e);					}				}								progress.finishClass();			}						// Call finishPass on each detector			for (Detector2 detector : detectorList) {				detector.finishPass();			}						progress.finishPerClassAnalysis();						passCount++;		}		// Flush any queued bug reports		bugReporter.finish();		// Flush any queued error reports		bugReporter.reportQueuedErrors();	}