if (fInput == null) { IJavaElement newInput= fBrowsingPart.findInputForJavaElement(element); if (newInput != null) postAdjustInputAndSetSelection(element); }
	protected void processDelta(IJavaElementDelta delta) throws JavaModelException {		int kind= delta.getKind();		int flags= delta.getFlags();		IJavaElement element= delta.getElement();		if (!getProvideWorkingCopy() && element instanceof IWorkingCopy && ((IWorkingCopy)element).isWorkingCopy()) {			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 (fBrowsingPart.isValidElement(element)) {				if (element instanceof IClassFile) {					postRemove(((IClassFile)element).getType());				} else if (element instanceof ICompilationUnit && !((ICompilationUnit)element).isWorkingCopy()) {					if (!getProvideWorkingCopy())						postRefresh(null);				} else if (parent instanceof ICompilationUnit && getProvideWorkingCopy() && !((ICompilationUnit)parent).isWorkingCopy()) {					//	do nothing				} else					postRemove(element);			}			if (parent instanceof IPackageFragment) 				updatePackageIcon((IPackageFragment)parent);			// we are filtering out empty subpackages, so we			// a package becomes empty we remove it from the viewer. 			if (isPackageFragmentEmpty(element.getParent())) {				if (fViewer.testFindItem(parent) != null)					postRefresh(internalGetParent(parent));			}  						// XXX: Instance check for MembersView will go away once we have a content provider for each view			if (element instanceof ICompilationUnit && fBrowsingPart instanceof MembersView)				postRefresh(null);						return;		}		if (kind == IJavaElementDelta.ADDED) {			Object parent= internalGetParent(element);			// we are filtering out empty subpackages, so we			// have to handle additions to them specially. 			if (parent instanceof IPackageFragment) {				Object grandparent= internalGetParent(parent);				// avoid posting a refresh to an unvisible parent				if (parent.equals(fInput)) {					postRefresh(parent);				} else {					// refresh from grandparent if parent isn't visible yet					if (fViewer.testFindItem(parent) == null)						postRefresh(grandparent);					else {						postRefresh(parent);					}					}			}			if (fBrowsingPart.isValidElement(element))				if (element instanceof IClassFile) {					postAdd(parent, ((IClassFile)element).getType());				} else if (element instanceof ICompilationUnit && !((ICompilationUnit)element).isWorkingCopy()) {					if (!getProvideWorkingCopy())						postAdd(parent, ((ICompilationUnit)element).getAllTypes());				} else if (parent instanceof ICompilationUnit && getProvideWorkingCopy() && !((ICompilationUnit)parent).isWorkingCopy()) {					//	do nothing				} else					postAdd(parent, element);		}		if (element instanceof IType && fBrowsingPart.isValidInput(element))			postRefresh(null);					if (isClassPathChange(delta))			 // throw the towel and do a full refresh			postRefresh(null);				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 && fBrowsingPart.isValidElement(element)) {				postRefresh(skipProjectPackageFragmentRoot((IPackageFragmentRoot)element));				return;			}		}		for (int i= 0; i < affectedChildren.length; i++) {			processDelta(affectedChildren[i]);		}	}