Bug 326699 Part in shared area finds wrong parent context during shutdown
Build: 4.1 M2. After working for a couple of days, I attempted to shutdown and got an NPE. I was unable to close the application normally and had to kill the process. Complete log to follow but here is a snippet: java.lang.NullPointerException at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1322) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1059) at org.eclipse.ui.internal.WorkbenchWindow.access$9(WorkbenchWindow.java:1038) at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:1085) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java
wb.createAndRunUI(window);
		SampleView view = (SampleView) part.getObject();
		assertFalse(view.isDestroyed());
		perspectiveStack.setSelectedElement(perspectiveB);
		appContext.get(EModelService.class).removePerspectiveModel(
				perspectiveB, window);
		assertFalse(view.isDestroyed());
		assertNotNull(part.getContext().getParent());
		assertEquals(perspectiveA.getContext(), part.getContext().getParent());
	}
	public void testRemoveGuiBug324228_2() {
		MApplication application = ApplicationFactoryImpl.eINSTANCE
				.createApplication();
		MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
		application.getChildren().add(window);
		application.setSelectedElement(window);
		MPart part = BasicFactoryImpl.eINSTANCE.createPart();
		part.setContributionURI("platform:/plugin/org.eclipse.e4.ui.tests/org.eclipse.e4.ui.tests.workbench.SampleView");
		window.getSharedElements().add(part);
		MPerspectiveStack perspectiveStack = AdvancedFactoryImpl.eINSTANCE
				.createPerspectiveStack();
		window.getChildren().add(perspectiveStack);
		window.setSelectedElement(perspectiveStack);
		MPerspective perspectiveA = AdvancedFactoryImpl.eINSTANCE
				.createPerspective();
		perspectiveA.setElementId("perspectiveA"); 
		perspectiveStack.getChildren().add(perspectiveA);
		perspectiveStack.setSelectedElement(perspectiveA);
		MPlaceholder placeholderA = AdvancedFactoryImpl.eINSTANCE
				.createPlaceholder();