updatePackageIcon((IPackageFragment)parent);
postUpdateIcon((IPackageFragment)parent);
	protected void processDelta(IJavaElementDelta delta) throws JavaModelException {		int kind= delta.getKind();		int flags= delta.getFlags();		IJavaElement element= delta.getElement();		if (!getProvideWorkingCopy() && isWorkingCopy(element))			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) {			// when a working copy is removed all we have to do			// is to refresh the compilation unit			if (isWorkingCopy(element)) {				refreshWorkingCopy((IWorkingCopy)element);				return;			}			Object parent= internalGetParent(element);						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));			}  			return;		}		if (kind == IJavaElementDelta.ADDED) { 			// when a working copy is added all we have to do			// is to refresh the compilation unit			if (isWorkingCopy(element)) {				refreshWorkingCopy((IWorkingCopy)element);				return;			}			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);				// 1GE8SI6: ITPJUI:WIN98 - Rename is not shown in Packages View				// 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);					}					}			} else {  				postAdd(parent, element);			}		}		if (element instanceof ICompilationUnit) {			if (getProvideWorkingCopy()) {				IJavaElement original= ((IWorkingCopy)element).getOriginalElement();				if (original != null)					element= original;			}			if (kind == IJavaElementDelta.CHANGED) {				postRefresh(element);				updateSelection(delta);				return;			}		}		// we don't show the contents of a compilation or IClassFile, so don't go any deeper		if ((element instanceof ICompilationUnit) || (element instanceof IClassFile))			return;					// the contents of an external JAR has changed		if (element instanceof IPackageFragmentRoot && ((flags & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) != 0))			postRefresh(element);					if (isClassPathChange(delta)) {			 // throw the towel and do a full refresh of the affected java project. 			postRefresh(element.getJavaProject());		}				if (delta.getResourceDeltas() != null) {			IResourceDelta[] rd= delta.getResourceDeltas();			for (int i= 0; i < rd.length; i++) {				processResourceDelta(rd[i], 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);				// 1GE8SI6: ITPJUI:WIN98 - Rename is not shown in Packages View				// avoid posting a refresh to an unvisible parent				if (element.equals(fInput)) {					postRefresh(element);				} else {					postRefresh(parent);				}				return;			}			// more than one child changed, refresh from here downwards			if (element instanceof IPackageFragmentRoot)				postRefresh(skipProjectPackageFragmentRoot((IPackageFragmentRoot)element));			else				postRefresh(element);			return;		}		for (int i= 0; i < affectedChildren.length; i++) {			processDelta(affectedChildren[i]);		}	}