Replaced EObjectIdManager with built-in map
diff --git a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/EObjectIdManager.java b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/EObjectIdManager.java
deleted file mode 100644
index f3fbb43..0000000
--- a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/EObjectIdManager.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.eclipse.epsilon.flexmi;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-
-public class EObjectIdManager {
-	
-	protected HashMap<String, List<EObject>> cache = new HashMap<String, List<EObject>>();
-	
-	public void setEObjectId(EObject eObject, String id) {
-		List<EObject> eObjects = cache.get(id);
-		if (eObjects == null) {
-			eObjects = new ArrayList<EObject>();
-			cache.put(id, eObjects);
-		}
-		eObjects.add(eObject);
-	}
-	
-	public List<EObject> getEObjectsById(String id) {
-		List<EObject> eObjects = cache.get(id);
-		if (eObjects == null) return Collections.emptyList();
-		else return eObjects;
-	}
-	
-	public boolean hasId(EObject eObject) {
-		return cache.values().contains(eObject);
-	}
-}
diff --git a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java
index a33a217..95451b5 100644
--- a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java
+++ b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java
@@ -46,7 +46,6 @@
 	public static final String OPTION_ORPHANS_AS_TOP_LEVEL = "orphansAsTopLevel";
 	public static final String OPTION_FUZZY_MATCHING_THRESHOLD = "fuzzyMatchingThreshold";
 	
-	protected EObjectIdManager eObjectIdManager = new EObjectIdManager();
 	protected EObjectTraceManager eObjectTraceManager = new EObjectTraceManager();
 	protected List<UnresolvedReference> unresolvedReferences = new ArrayList<UnresolvedReference>();
 	protected Stack<Object> stack = new Stack<Object>();
@@ -142,7 +141,7 @@
 		scripts.clear();
 		eClassCache.clear();
 		allSubtypesCache.clear();
-		eObjectIdManager = new EObjectIdManager();
+		setIntrinsicIDToEObjectMap(new HashMap<String, EObject>());
 		
 		if (options != null) {
 			for (Object key : options.keySet()) {
@@ -357,20 +356,21 @@
 		for (UnresolvedReference reference : unresolvableReferences) {
 			addParseWarning("Could not resolve target " + reference.getValue() + " for reference " + reference.getAttributeName() + " (" + reference.getEReference().getName() + ")", reference.getUri(), reference.getLine());
 		}
-		eObjectIdManager = new EObjectIdManager();
 	}
 	
 	protected boolean resolveReference(UnresolvedReference unresolvedReference) {
-		List<EObject> candidates = eObjectIdManager.getEObjectsById(unresolvedReference.getValue());
+		List<EObject> candidates = Arrays.asList(getIntrinsicIDToEObjectMap().get(unresolvedReference.getValue()));
 		if (!unresolvedReference.resolve(candidates)) {
+			System.out.println("Failed");
 			for (Resource resource : getResourceSet().getResources()) {
 				if (resource != this) {
 					candidates = Arrays.asList(resource.getEObject(unresolvedReference.getValue()));
 					if (unresolvedReference.resolve(candidates)) return true;
 				}
 			}
+			return false;
 		}
-		return false;
+		return true;
 	}
 	
 	public int getLineNumber(Node node) {
@@ -393,7 +393,7 @@
 			if (attributes.getNamedItem("id") != null) {
 				String value = attributes.getNamedItem("id").getNodeValue();
 				attributes.removeNamedItem("id");
-				eObjectIdManager.setEObjectId(eObject, value);
+				getIntrinsicIDToEObjectMap().put(value, eObject);
 			}
 		}
 		
@@ -459,7 +459,7 @@
 			if (eValue == null) return;
 			eObject.eSet(eAttribute, eValue);
 			if (eAttribute.isID() || "name".equalsIgnoreCase(eAttribute.getName())) {
-				if (!eObjectIdManager.hasId(eObject)) eObjectIdManager.setEObjectId(eObject, value);
+				getIntrinsicIDToEObjectMap().put(value, eObject);
 			}
 		}
 	}