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
referenceAttributeElement.setAttribute(UNSET_ATTNAME, UNSET_ATTVALUE_TRUE);
		}
		return referenceAttributeElement;
	}
	private static boolean isStringToStringMap(String featureName) {
		return featureName.equals(CONTRIBUTION_PERSISTEDSTATE_ATTNAME)
				|| featureName.equals(CONTEXT_PROPERTIES_ATTNAME);
	}
	/**
	 * Determines whether this feature is a direct reference to a particular object. That is, the
	 * reference is a 1-1 relationship and the referenced object is not referred by other objects
	 * and is a hard containment feature.
	 * <p>
	 * An example of a direct reference would be a window's main menu. The menu is "owned" by the
	 * window and cannot be one of the menus in a part.
	 * </p>
	 * 
	 * @param featureName
	 *            the name of the interested feature
	 * @return <code>true</code> if this particular feature directly references and "owns" the
	 *         target object, <code>false</code> otherwise
	 * @see #isIndirectReference(String)
	 */
	private static boolean isDirectReference(String featureName) {
		
		return featureName.equals(WINDOW_MAINMENU_ATTNAME) ||
		
				featureName.equals(PART_TOOLBAR_ATTNAME);
	}
	/**