Bug 22553 "Show in Types Hierarchy" selects the "wrong" class [type hierarchy]
My custom perspective has a Packages pane, Hierarchy pane and a code editor pane. My packages pane is really a pane with a Packages Tab and a Projects Tab. (1) I select one of my packages. (2) I choose Open in Types Hierarchy. (3) E opens by package in the Types Hierarchy but Selects the class Object! (4) This causes the Package pane to select the java.lang package! (5) I have "lost" my context and the UI looks "funny": I have the beautiful hierarchy view of my classes in my package but, Object is selected (which is not in my package obviously) and java.lang is selected. Suggestion: (a) Do NOT select any classes in the just opened package. (b) If you MUST select a class, select one in the package. Please. Thank you very much.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java
return (IType) getCurrentViewer().getTreeRootType();
		} else {
			return (IType) elem;
		}
	}
	
	private void internalSelectType(IMember elem, boolean reveal) {	
		TypeHierarchyViewer viewer= getCurrentViewer();
		viewer.removeSelectionChangedListener(fSelectionChangedListener);
		viewer.setSelection(elem != null ? new StructuredSelection(elem) : StructuredSelection.EMPTY, reveal);
		viewer.addSelectionChangedListener(fSelectionChangedListener);
	}
	
	private void internalSelectMember(IMember member) {
		fMethodsViewer.removeSelectionChangedListener(fSelectionChangedListener);
		fMethodsViewer.setSelection(member != null ? new StructuredSelection(member) : StructuredSelection.EMPTY);
		fMethodsViewer.addSelectionChangedListener(fSelectionChangedListener);
	}	
	
	/**
	 * When the input changed or the hierarchy pane becomes visible,
	 * <code>updateHierarchyViewer<code> brings up the correct view and refreshes
	 * the current tree
	 */
	private void updateHierarchyViewer() {
		if (fInputElement == null) {
			fPagebook.showPage(fNoHierarchyShownLabel);
		} else {
			if (getCurrentViewer().containsElements() != null) {
				Runnable runnable= new Runnable() {