Bug 93613 [package explorer] Inner class org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.PackageExplorerProblemTreeViewer has links to its instance in parent
Class org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.PackageExplorerProblemTreeViewer is referencing fViewer field from PackageExplorerPart, which is actually instance of PackageExplorerProblemTreeViewer class. Should be methods getFilters() and getContentProvider() called directly and in method filter() "this" should be used instead of fViewer. Also, in order to make PackageExplorerProblemTreeViewer more reusable (e.g. to allow splits or multiple views) it would make sense to make this inner class static and keep states of isFlat and showWorkingSets flags in this class instead of the PackageExplorerPart class.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
};
	}
	public boolean show(ShowInContext context) {
		ISelection selection= context.getSelection();
		if (selection instanceof IStructuredSelection) {
			 
			IStructuredSelection structuredSelection= ((IStructuredSelection) selection);
			if (structuredSelection.size() == 1 && tryToReveal(structuredSelection.getFirstElement()))
				return true;
		}
		
		Object input= context.getInput();
		if (input instanceof IEditorInput) {
			Object elementOfInput= getElementOfInput((IEditorInput)context.getInput());
			return elementOfInput != null && tryToReveal(elementOfInput);
		}
		return false;
	}
	/**
	 * Returns the <code>IShowInSource</code> for this view.
	 */
	protected IShowInSource getShowInSource() {
		return new IShowInSource() {
			public ShowInContext getShowInContext() {
				return new ShowInContext(
					getViewer().getInput(),
					getViewer().getSelection());
			}
		};
	}