public void done() {};
public void done() {}
	public static ICompilationUnit[] findAffectedCompilationUnits(final IProgressMonitor pm, IJavaSearchScope scope, ISearchPattern pattern) throws JavaModelException {		final Set matches= new HashSet(5);		IJavaSearchResultCollector collector = new IJavaSearchResultCollector() {			private IResource fLastMatch;			public void aboutToStart() {};			public void accept(IResource resource, int start, int end, IJavaElement enclosingElement, int accuracy) throws CoreException {				if (fLastMatch != resource) {					matches.add(resource);						fLastMatch= resource;				}			}			public void done() {};			public IProgressMonitor getProgressMonitor() {				return pm;			};		};		new SearchEngine().search(ResourcesPlugin.getWorkspace(), pattern, scope, collector);		// XXX: This is a layer breaker - should not access jdt.ui		IWorkingCopy[] workingCopies= JavaUI.getSharedWorkingCopiesOnClasspath();		List result= new ArrayList(matches.size());		for (Iterator iter= matches.iterator(); iter.hasNext(); ) {			IResource resource= (IResource)iter.next();			IJavaElement element= JavaCore.create(resource);			if (element instanceof ICompilationUnit) {				ICompilationUnit original= (ICompilationUnit)element;				IWorkingCopy wcopy= getWorkingCopy(original, workingCopies);				if (wcopy != null && wcopy instanceof ICompilationUnit)					result.add(wcopy);				else					result.add(original);			}		}		return (ICompilationUnit[])result.toArray(new ICompilationUnit[result.size()]);	}