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/SWTPartRenderer.java
if (toReparent.getParent() != parent) {
			toReparent.setParent(parent);
			parent.layout(true);
		}
	}
	/**
	 * If a model element containing a widget is removed from its parent we have
	 * to remove the control immediately from its parent's structure (to get the
	 * layout correct) so we'll place it in 'limbo' (an invisible shell).
	 * 
	 * @param ctrl
	 */
	private void locallyHide(Control ctrl) {
		if (limbo == null) {
			limbo = new Shell(ctrl.getShell(), SWT.NONE);
			limbo.setVisible(false);
		}
		
		
		Control toReparent = getOutermost(ctrl);
		Composite curParent = toReparent.getParent();
		toReparent.setParent(limbo);
		curParent.layout(true);
	}
	/*
	 * HACK: Create a wrapper composite with appropriate layout for the purpose
	 * of styling margins. See bug #280632
	 */
	protected Composite createWrapperForStyling(Composite parentWidget,