Bug 44393 [Viewers] + shown in front of methods even if local types filter is on (different behaviour in outliner, members view and package explorer)
Test pass M4 - load JUnit - add an anonymous type to Assert#Assert - enable local type filter in Outliner observe: there is a plus in front of Assert which goes away when clicking on it. This might be JFace related but I would prefer that the plus is removed when the filter is switched on. - close Outliner - open Outliner observe: there isn't any plus sign in front of Assert - open Java Browsing perspective - enable local type filter in members view - select Assert class in Types view observe: the constructor Assert has a plus sign in front which goes away when clicking on it. - switch to another class - switch back to Assert observe: the constructor again has a plus sign in front. This is really annoying. The members view should at least behave like the outliner. - switch to package explorer - expand Assert - toggle local type filter observe: plus sign is added and removed correctly.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaOutlinePage.java
JavaPlugin.log(e.getStatus());
							}
						}
						return "main".equals(element.getElementName()); 
					}
					return false;
				}
				
				protected ISourceRange getSourceRange(IJavaElement element) throws JavaModelException {
					if (element instanceof ISourceReference)
						return ((ISourceReference) element).getSourceRange();
					if (element instanceof IMember && !(element instanceof IInitializer))
						return ((IMember) element).getNameRange();
					return null;
				}
				
				protected boolean overlaps(ISourceRange range, int start, int end) {
					return start <= (range.getOffset() + range.getLength() - 1) && range.getOffset() <= end;
				}
				
				protected boolean filtered(IJavaElement parent, IJavaElement child) {
					
					Object[] result= new Object[] { child };
					ViewerFilter[] filters= getFilters();
					for (int i= 0; i < filters.length; i++) {
						result= filters[i].filter(this, parent, result);
						if (result.length == 0)
							return true;
					}