Bug 284357 Code in ReflectionContributionFactory duplicates #invoke() - with a twist
bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/E4Application.java
new Exception()), StatusReporter.LOG);
			}
			@Override
			public Object compute(IEclipseContext context) {
				MContext perceivedRoot = (MContext) context.get(MWindow.class
						.getName());
				if (perceivedRoot == null) {
					perceivedRoot = (MContext) context.get(MApplication.class
							.getName());
					if (perceivedRoot == null) {
						log();
						IEclipseContext ctxt = (IEclipseContext) appContext
								.getLocal(IContextConstants.ACTIVE_CHILD);
						return ctxt.get(MWindow.class);
					}
				}
				IEclipseContext current = perceivedRoot.getContext();
				if (current == null) {
					log();
					IEclipseContext ctxt = (IEclipseContext) appContext
							.getLocal(IContextConstants.ACTIVE_CHILD);
					return ctxt.get(MWindow.class);
				}
				IEclipseContext next = (IEclipseContext) current
						.getLocal(IContextConstants.ACTIVE_CHILD);
				MPerspective candidate = null;
				while (next != null) {
					current = next;
					MPerspective perspective = current.get(MPerspective.class);
					if (perspective != null) {