Bug 30658 Package explorer drag'n drop does not always work
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
Object[] children = ((ITreeContentProvider) fViewer.getContentProvider()).getChildren(parent);
				for (int i = 0; i < children.length; i++) {
					Object object = children[i];
					if (!isEssential(object)) {
						object = filter(object, parent, filters);
						if (object != null) {
							list.add(object);
						}
					} else
						list.add(object);
				}
				return list.toArray();
			}
			
			
			private Object filter(Object object, Object parent, ViewerFilter[] filters) {
				for (int i = 0; i < filters.length; i++) {
					ViewerFilter filter = filters[i];
					if (!filter.select(fViewer, parent, object))
						return null;
				}
				return object;
			}
		
			/* Checks if a filtered object in essential (ie. is a parent that
			 * should not be removed).
			 */ 
			private boolean isEssential(Object object) {
				try {
					if (!isFlatLayout() && object instanceof IPackageFragment) {