if (nodesToRemove.isEmpty()) return nodesToRemove;
	private Collection computeNodesToRemove(Set nodeSet, IProgressMonitor pm) throws JavaModelException{		pm.beginTask("", 1); 		IProgressMonitor subPm1= new SubProgressMonitor(pm, 1);		subPm1.beginTask("", nodeSet.size());		Collection nodesToRemove= new HashSet(0);		for (Iterator iter= nodeSet.iterator(); iter.hasNext();) {			ASTNode node= (ASTNode) iter.next();			if (hasDirectProblems(node, new SubProgressMonitor(subPm1, 1)))				nodesToRemove.add(node);			}		subPm1.done();		IProgressMonitor subPm2= new SubProgressMonitor(pm, 1);		subPm2.beginTask("", nodeSet.size() - nodesToRemove.size());		boolean reiterate;		do {			reiterate= false;			for (Iterator iter= nodeSet.iterator(); iter.hasNext();) {				ASTNode node= (ASTNode) iter.next();				if (! nodesToRemove.contains(node) && hasIndirectProblems(node, nodesToRemove, new SubProgressMonitor(subPm2, 1))){					reiterate= true;					nodesToRemove.add(node);							}			}		} while (reiterate);			subPm2.done();		pm.done();		return nodesToRemove;	}