protected void remove(Object element, boolean refreshViewer) {
protected void remove(Set toRemove, Set toUpdate, Object element) {
	protected void remove(Object element, boolean refreshViewer) {		// precondition here:  fResult.getMatchCount(child) <= 0			AbstractTreeViewer viewer= (AbstractTreeViewer) getPage().getViewer();		if (hasChildren(element)) {			if (refreshViewer)				viewer.refresh(element);		} else {			if (getPage().getDisplayedMatchCount(element) == 0) {				fChildrenMap.remove(element);				Object parent= getParent(element);				if (parent != null) {					removeFromSiblings(element, parent);					remove(parent, refreshViewer);				} else {					removeFromSiblings(element, fResult);					if (refreshViewer)						viewer.refresh();				}			} else {				if (refreshViewer) {					viewer.refresh(element);				}			}		}	}