Bug 23031 Package explorer does not update when input==package [package explorer]
From a java perspective, create a Java project with two packages (say test.package1 and test.package2). Create a couple of classes in both packages. From the package view, select test.package2 and from the context menu, open a new java window on it. Notice you only see the two classes you created in this package. Now go back to the other window, and move a class from test.package1 to test.package2. Go back to the new window, look at the package view and notice it still only displays 2 classes. Selecting refresh from the context menu does nothing. If you close the package view and open it again, then you see 3 classes.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java
/**
	 * Processes a delta recursively. When more than two children are affected the
	 * tree is fully refreshed starting at this node. The delta is processed in the
	 * current thread but the viewer updates are posted to the UI thread.
	 */
	public void processDelta(IJavaElementDelta delta) throws JavaModelException {
		int kind= delta.getKind();
		int flags= delta.getFlags();
		IJavaElement element= delta.getElement();
		
		if(element.getElementType()!= IJavaElement.JAVA_MODEL && element.getElementType()!= IJavaElement.JAVA_PROJECT){
			IJavaProject proj= element.getJavaProject();
			if (proj == null || !proj.getProject().isOpen())
				return;	
		}
		
		if (!fIsFlatLayout && element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
			fPackageFragmentProvider.processDelta(delta);
			if (processResourceDeltas(delta.getResourceDeltas(), element))
			    return;
			IJavaElementDelta[] affectedChildren= delta.getAffectedChildren();			
			processAffectedChildren(affectedChildren);
			return;
		}
			
		if (!getProvideWorkingCopy() && isWorkingCopy(element))
			return; 
		if (element != null && element.getElementType() == IJavaElement.COMPILATION_UNIT && !isOnClassPath((ICompilationUnit)element))
			return;