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 static final String UNSET_ATTVALUE_TRUE = "true"; 
	private static final String ENTRY_ATTVALUE_KEY = "key"; 
	private static final String ENTRY_ATTVALUE_VALUE = "value"; 
	private ChangeRecorder changeRecorder;
	private ChangeDescription changeDescription;
	private EObject rootObject;
	public void recordChanges(Object object) {
		Assert.isNotNull(object);
		rootObject = (EObject) object;
		changeRecorder = new ChangeRecorder(rootObject) {
			protected boolean shouldRecord(EStructuralFeature feature, EObject eObject) {
				return !feature.isTransient() && super.shouldRecord(feature, eObject);
			}
			protected boolean shouldRecord(EStructuralFeature feature, EReference containment,
					Notification notification, EObject eObject) {
				return !feature.isTransient()
						&& super.shouldRecord(feature, containment, notification, eObject);
			}
		};
		changeDescription = null;
	}
	static List<Object> getReferences(Object object) {
		Iterator<EObject> it = ((EObject) object).eAllContents();
		List<Object> references = new LinkedList<Object>();
		while (it.hasNext()) {
			Object reference = it.next();
			references.add(reference);
		}
		return references;
	}