Bug 308629 [Compatibility] NPE thrown when restarting Eclipse
It's trying to add bindings to the application and failing. java.lang.NullPointerException at org.eclipse.emf.common.util.AbstractEList.getNonDuplicates(AbstractEList.java:1167) at org.eclipse.emf.common.util.AbstractEList.addAll(AbstractEList.java:372) at org.eclipse.e4.ui.model.application.impl.ApplicationImpl.eSet(ApplicationImpl.java:417) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:1081) at org.eclipse.e4.workbench.ui.internal.EMFModelDeltaSet.apply(EMFModelDeltaSet.java:31) at org.eclipse.e4.workbench.ui.internal.ModelReconcilingService.applyDeltas(ModelReconcilingService.java:54) at org.eclipse.e4.workbench.ui.internal.ModelReconcilingService.applyDeltas(ModelReconcilingService.java:36) at org.eclipse.e4.workbench.ui.internal.ResourceHandler.loadMostRecentModel(ResourceHandler.java:173) at org.eclipse.e4.ui.workbench.swt.internal.E4Application.loadApplicationModel(E4Application.java:194) at org.eclipse.e4.ui.workbench.swt.internal.E4Application.createE4Workbench(E4Application.java:129)
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/XMLModelReconciler.java
private void constructDeltas(Collection<ModelDelta> deltas, List<Object> references,
			EObject object, Element element) {
		String elementName = element.getNodeName();
		if (elementName.equals(CONTEXT_PROPERTIES_ATTNAME)) {
			constructEntryDelta(deltas, MApplicationPackage.eINSTANCE.getContext_Properties(),
					object, element);
		} else if (elementName.equals(CONTRIBUTION_PERSISTEDSTATE_ATTNAME)) {
			constructEntryDelta(deltas, MApplicationPackage.eINSTANCE
					.getContribution_PersistedState(), object, element);
		} else {
			constructObjectDeltas(deltas, references, object, element);
		}
	}
	private void constructEntryDelta(Collection<ModelDelta> deltas, EStructuralFeature feature,
			EObject object, Element element) {
		if (element.getAttribute(UNSET_ATTNAME).equals(UNSET_ATTVALUE_TRUE)) {
			EMFDeltaEntrySet delta = new EMFDeltaEntrySet(object, feature, element
					.getAttribute(ENTRY_ATTVALUE_KEY), null);
			deltas.add(delta);
		} else {
			EMFDeltaEntrySet delta = new EMFDeltaEntrySet(object, feature, element
					.getAttribute(ENTRY_ATTVALUE_KEY), element.getAttribute(ENTRY_ATTVALUE_VALUE));
			deltas.add(delta);
		}
	}
	private void constructObjectDeltas(Collection<ModelDelta> deltas, List<Object> references,
			EObject object, Element element) {
		NodeList nodeList = (NodeList) element;
		for (int i = 0; i < nodeList.getLength(); i++) {
			Node node = nodeList.item(i);