remove(toRemove, toUpdate, updatedElements[i]);
remove(updatedElements[i], true);
	public synchronized void elementsChanged(Object[] updatedElements) {		AbstractTreeViewer viewer= (AbstractTreeViewer) getPage().getViewer();		if (fResult == null)			return;		Set toRemove= new HashSet();		Set toUpdate= new HashSet();		Map toAdd= new HashMap();		for (int i= 0; i < updatedElements.length; i++) {			if (getPage().getDisplayedMatchCount(updatedElements[i]) > 0)				insert(toAdd, toUpdate, updatedElements[i]);			else				remove(toRemove, toUpdate, updatedElements[i]);		}				for (Iterator iter= toAdd.keySet().iterator(); iter.hasNext();) {			Object parent= iter.next();			HashSet children= (HashSet) toAdd.get(parent);			viewer.add(parent, children.toArray());		}		viewer.remove(toRemove.toArray());		for (Iterator elementsToUpdate= toUpdate.iterator(); elementsToUpdate.hasNext();) {			viewer.refresh(elementsToUpdate.next());		}			}