LinkedList<String> archiveWorkList = new LinkedList<String>(); archiveWorkList.addAll(project.getJarFileList());
LinkedList<ArchiveWorkListItem> archiveWorkList = new LinkedList<ArchiveWorkListItem>();  for (Iterator<String> i = project.getJarFileList().iterator(); i.hasNext(); ) { String fileName = i.next(); archiveWorkList.add(new ArchiveWorkListItem(fileName, true)); }
	public void execute() throws java.io.IOException, InterruptedException {		// Configure the analysis context		analysisContext = new AnalysisContext(bugReporter);		analysisContext.setSourcePath(project.getSourceDirList());		// Give the BugReporter a reference to this object,		// in case it wants to access information such		// as the AnalysisContext		bugReporter.setEngine(this);		// Create detectors		createDetectors();		// Clear the repository of classes		clearRepository();		// Get list of files to analyze.		// Note that despite the name getJarFileArray(),		// they can also be zip files, directories,		// and single class files.		LinkedList<String> archiveWorkList = new LinkedList<String>();		archiveWorkList.addAll(project.getJarFileList());		// Report how many archives/directories/files will be analyzed,		// for progress dialog in GUI		progressCallback.reportNumberOfArchives(archiveWorkList.size());		// Keep track of the names of all classes to be analyzed		List<String> repositoryClassList = new LinkedList<String>();		// Add all classes in analyzed archives/directories/files		while (!archiveWorkList.isEmpty()) {			String archive = archiveWorkList.removeFirst();			addFileToRepository(archive, archiveWorkList, repositoryClassList);		}		// Callback for progress dialog: analysis is starting		progressCallback.startAnalysis(repositoryClassList.size());		// Examine all classes for bugs.		// Don't examine the same class more than once.		// (The user might specify two jar files that contain		// the same class.)		Set<String> examinedClassSet = new HashSet<String>();		for (Iterator<String> i = repositoryClassList.iterator(); i.hasNext();) {			String className = i.next();			if (examinedClassSet.add(className))				examineClass(className);		}		// Callback for progress dialog: analysis finished		progressCallback.finishPerClassAnalysis();		// Force any detectors which defer work until all classes have		// been seen to do that work.		this.reportFinal();		// Flush any queued bug reports		bugReporter.finish();		// Flush any queued error reports		bugReporter.reportQueuedErrors();	}