postRefresh(element);
postRefresh(null);
	protected void processDelta(IJavaElementDelta delta) throws JavaModelException {		int kind= delta.getKind();		int flags= delta.getFlags();		final IJavaElement element= delta.getElement();		final boolean isElementValidForView= fBrowsingPart.isValidElement(element);		if (!getProvideWorkingCopy() && element instanceof IWorkingCopy && ((IWorkingCopy)element).isWorkingCopy())			return;		if (element != null && element.getElementType() == IJavaElement.COMPILATION_UNIT && !isOnClassPath((ICompilationUnit)element))			return;		// handle open and closing of a solution or project		if (((flags & IJavaElementDelta.F_CLOSED) != 0) || ((flags & IJavaElementDelta.F_OPENED) != 0)) {			postRefresh(element);			return;		}				if (kind == IJavaElementDelta.REMOVED) {			Object parent= internalGetParent(element);			if (isElementValidForView) {				if (element instanceof IClassFile) {					postRemove(((IClassFile)element).getType());				} else if (element instanceof ICompilationUnit && !((ICompilationUnit)element).isWorkingCopy()) {						postRefresh(null);				} else if (element instanceof ICompilationUnit && ((ICompilationUnit)element).isWorkingCopy()) {					if (getProvideWorkingCopy())						postRefresh(null);				} else if (parent instanceof ICompilationUnit && getProvideWorkingCopy() && !((ICompilationUnit)parent).isWorkingCopy()) {					if (element instanceof IWorkingCopy && ((IWorkingCopy)element).isWorkingCopy()) {						// working copy removed from system - refresh						postRefresh(null);					}				} else if (element instanceof IWorkingCopy && ((IWorkingCopy)element).isWorkingCopy() && parent != null && parent.equals(fInput))					// closed editor - removing working copy					postRefresh(null);				else					postRemove(element);			}							if (fBrowsingPart.isAncestorOf(element, fInput)) {				if (element instanceof IWorkingCopy && ((IWorkingCopy)element).isWorkingCopy()) {					postAdjustInputAndSetSelection(JavaModelUtil.toOriginal((IJavaElement) fInput));				} else					postAdjustInputAndSetSelection(null);			}						if (fInput != null && fInput.equals(element))				postRefresh(null);			if (parent instanceof IPackageFragment && fBrowsingPart.isValidElement(parent))  {				// refresh if package gets empty (might be filtered)				if (isPackageFragmentEmpty((IPackageFragment)parent) && fViewer.testFindItem(parent) != null)						postRefresh(null);			}			return;		}		if (kind == IJavaElementDelta.ADDED && delta.getMovedFromElement() != null && element instanceof ICompilationUnit)			return;				if (kind == IJavaElementDelta.ADDED) {			if (isElementValidForView) {				Object parent= internalGetParent(element);								if (element instanceof IClassFile) {					postAdd(parent, ((IClassFile)element).getType());				} else if (element instanceof ICompilationUnit && !((ICompilationUnit)element).isWorkingCopy()) {						postAdd(parent, ((ICompilationUnit)element).getTypes());				} else if (parent instanceof ICompilationUnit && getProvideWorkingCopy() && !((ICompilationUnit)parent).isWorkingCopy()) {					//	do nothing				} else if (element instanceof IWorkingCopy && ((IWorkingCopy)element).isWorkingCopy()) {					// new working copy comes to live					postRefresh(null);				} else					postAdd(parent, element);			} else	if (fInput == null) {				IJavaElement newInput= fBrowsingPart.findInputForJavaElement(element);				if (newInput != null)					postAdjustInputAndSetSelection(element);			} else if (element instanceof IType && fBrowsingPart.isValidInput(element)) {				IJavaElement cu1= element.getAncestor(IJavaElement.COMPILATION_UNIT);				IJavaElement cu2= ((IJavaElement)fInput).getAncestor(IJavaElement.COMPILATION_UNIT);				if  (cu1 != null && cu2 != null && cu1.equals(cu2))					postAdjustInputAndSetSelection(element);			}			return;		}		if (kind == IJavaElementDelta.CHANGED) {			if (fInput != null && fInput.equals(element) && (flags & IJavaElementDelta.F_CHILDREN) != 0 && (flags & IJavaElementDelta.F_FINE_GRAINED) != 0) {				postRefresh(null, true);				return;			}			if (isElementValidForView && (flags & IJavaElementDelta.F_MODIFIERS) != 0) {					postUpdateIcon(element);			}		}		if (isClassPathChange(delta))			 // throw the towel and do a full refresh			postRefresh(null);		if ((flags & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) != 0 && fInput instanceof IJavaElement) {			IPackageFragmentRoot pkgRoot= (IPackageFragmentRoot)element;			IJavaElement inputsParent= ((IJavaElement)fInput).getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);			if (pkgRoot.equals(inputsParent))				postRefresh(null);		}		// the source attachment of a JAR has changed		if (element instanceof IPackageFragmentRoot && (((flags & IJavaElementDelta.F_SOURCEATTACHED) != 0 || ((flags & IJavaElementDelta.F_SOURCEDETACHED)) != 0)))			postUpdateIcon(element);				IJavaElementDelta[] affectedChildren= delta.getAffectedChildren();		if (affectedChildren.length > 1) {			// a package fragment might become non empty refresh from the parent			if (element instanceof IPackageFragment) {				IJavaElement parent= (IJavaElement)internalGetParent(element);				// avoid posting a refresh to an unvisible parent				if (element.equals(fInput)) {					postRefresh(element);				} else {					postRefresh(parent);				}			}			// more than one child changed, refresh from here downwards			if (element instanceof IPackageFragmentRoot && isElementValidForView) {				postRefresh(skipProjectPackageFragmentRoot((IPackageFragmentRoot)element));				return;			}		}		for (int i= 0; i < affectedChildren.length; i++) {			processDelta(affectedChildren[i]);		}	}