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
}
		Element referenceElement = document.createElement(REFERENCE_ELEMENT_NAME);
		referenceElement.setAttribute(APPLICATIONELEMENT_ID_ATTNAME, id);
		return referenceElement;
	}
	private void appendReferenceElements(Document document, Element element, List<?> references) {
		for (Object reference : references) {
			Element ef = createReferenceElement(document, (EObject) reference, null);
			element.appendChild(ef);
		}
	}
	private Element createNewReferenceElement(Document document, EObject eObject) {
		Element referenceElement = createUniqueReferenceElement(document, eObject);
		
		
		referenceElement.setAttribute(UNSET_ATTNAME, UNSET_ATTVALUE_TRUE);
		
		referenceElement.setAttribute(TYPE_ATTNAME, eObject.getClass().getInterfaces()[0]
				.getCanonicalName());
		for (EStructuralFeature collectedFeature : collectFeatures(eObject)) {
			String featureName = collectedFeature.getName();
			
			if (!collectedFeature.isTransient() && shouldPersist(featureName)) {
				Element referenceAttributeElement = createAttributeElement(document, eObject,
						collectedFeature, featureName);
				referenceElement.appendChild(referenceAttributeElement);
			}
		}
		return referenceElement;
	}