Bug 283340 NPE is thrown when last child of stack is removed
1. Close the 'Outline' view. 2. That stack is now gone. An NPE is logged. java.lang.NullPointerException at org.eclipse.e4.workbench.ui.renderers.swt.StackModelFactory.childRemoved(StackModelFactory.java:315) at org.eclipse.e4.workbench.ui.renderers.swt.StackModelFactory$2.notifyChanged(StackModelFactory.java:265) at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:280) at org.eclipse.e4.ui.model.internal.application.MPartImpl.setVisible(MPartImpl.java:457) at org.eclipse.e4.workbench.ui.renderers.swt.StackModelFactory$5.close(StackModelFactory.java:344) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:2199) at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:327)
bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackRenderer.java
return null;
	}
	private void hookTabControllerLogic(final MPart<?> parentElement,
			final MPart<?> childElement, final CTabItem cti) {
		
		((EObject) childElement).eAdapters().add(new AdapterImpl() {
			@Override
			public void notifyChanged(Notification msg) {
				if (ApplicationPackage.Literals.MPART__VISIBLE.equals(msg
						.getFeature())) {
					MPart<?> changedPart = (MPart<?>) msg.getNotifier();
					if (changedPart.getParent() == null)
						return;
					if (changedPart.isVisible()) {
						childAdded(changedPart.getParent(), changedPart);
					} else {
						childRemoved(changedPart.getParent(), changedPart);
					}
				}
			}
		});
		
		IObservableValue textObs = EMFObservables
				.observeValue((EObject) childElement,
						ApplicationPackage.Literals.MITEM__NAME);
		ISWTObservableValue uiObs = SWTObservables.observeText(cti);
		dbc.bindValue(uiObs, textObs, null, null);
		
		IObservableValue emfTTipObs = EMFObservables.observeValue(
				(EObject) childElement,