Detector detector = detectors[i];
	private void examineClass(String className) throws InterruptedException {		if (DEBUG) System.out.println("Examining class " + className);		this.currentClass = className;		try {			JavaClass javaClass = Repository.lookupClass(className);			// Notify ClassObservers			for (Iterator<ClassObserver> i = classObserverList.iterator(); i.hasNext();) {				i.next().observeClass(javaClass);			}			// Create a ClassContext for the class			ClassContext classContext = analysisContext.getClassContext(javaClass);			// Run the Detectors			for (int i = 0; i < detectors.length; ++i) {				if (Thread.interrupted())					throw new InterruptedException();				try {					Detector detector = detectors[i];					if (DEBUG) System.out.println("  running " + detector.getClass().getName());					detector.visitClassContext(classContext);				} catch (AnalysisException e) {					reportRecoverableException(className, e);				} catch (ArrayIndexOutOfBoundsException e) {					reportRecoverableException(className, e);				} catch (ClassCastException e) {					reportRecoverableException(className, e);				}			}		} catch (ClassNotFoundException e) {			// This should never happen unless there are bugs in BCEL.			bugReporter.reportMissingClass(e);			reportRecoverableException(className, e);		} catch (ClassFormatException e) {			reportRecoverableException(className, e);		}		progressCallback.finishClass();	}