diff --git a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java b/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java
index f327036..145fd1e 100644
--- a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java
+++ b/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSEAdapter.java
@@ -11,6 +11,9 @@
 
 package org.eclipse.wst.xml.core.internal.emf2xml;
 
+import java.util.Collection;
+import java.util.Iterator;
+
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.text.BadLocationException;
@@ -267,7 +270,24 @@
 	}
 
 	protected EMF2DOMAdapter primGetExistingAdapter(Node aNode) {
-		return (EMF2DOMAdapter) ((IDOMNode) aNode).getExistingAdapter(EMF2DOMAdapter.ADAPTER_CLASS);
+		
+		INodeNotifier sseNode = (INodeNotifier)aNode;
+		Collection adapters = sseNode.getAdapters();
+		INodeAdapter result = null;
+		for (Iterator iterator = adapters.iterator(); iterator.hasNext();) {
+			INodeAdapter a = (INodeAdapter) iterator.next();
+			if (a != null && a.isAdapterForType(EMF2DOMAdapter.ADAPTER_CLASS)) { //First Check if its an EMF2DOMAdapter
+				//Cast to EMF2DOMAdapter
+				EMF2DOMAdapter e2DAdapter = (EMF2DOMAdapter)a;
+				if (e2DAdapter.getTarget() == getTarget()) {//Now check if its the right one  (Multiple resources could be attached)
+					result = a;
+					break;
+				}
+			}
+		}
+		// if we didn't find one in our list,
+		// return the null result
+		return (EMF2DOMAdapter)result;
 
 	}
 
diff --git a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java b/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java
index d9a55fc..b49c254 100644
--- a/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java
+++ b/bundles/org.eclipse.wst.xml.core/src-emfModelSynch/org/eclipse/wst/xml/core/internal/emf2xml/EMF2DOMSSERenderer.java
@@ -18,19 +18,19 @@
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.WeakHashMap;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
+import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
 import org.eclipse.wst.common.internal.emf.resource.EMF2DOMAdapter;
 import org.eclipse.wst.common.internal.emf.resource.EMF2DOMRenderer;
 import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
@@ -43,7 +43,6 @@
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IModelStateListener;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.exceptions.ResourceInUse;
 import org.eclipse.wst.xml.core.internal.Logger;
 import org.eclipse.wst.xml.core.internal.document.DocumentTypeImpl;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
@@ -201,10 +200,7 @@
 	}
 
 	private void deregisterFromXMLModel() {
-		if (getXMLModel() != null) {
-			String id = getXMLModel().getId();
-			decrementCacheCount(id);
-		}
+		
 		deRegisterAsModelStateListener();
 		deRegisterAsModelLifecycleListener();
 		// This try/catch block is a hack to fix defect 204114. This occurs
@@ -301,78 +297,20 @@
 
 	public String getXMLModelId() {
 		return xmlModelId;
-	}
+	}	
 	
-	private static int uniqueCount = 0;
-	
-	private static synchronized String getUniqueID(String id){
-		return id+uniqueCount++;
-	}
-	
-	private static WeakHashMap resourceMap = new WeakHashMap();
-	private static HashMap resourceCount = new HashMap();
-	
-	private static synchronized Object getCachedResource(String id){
-		Object obj = resourceMap.get(id);
-		return obj;
-	}
-	
-	private static synchronized void incrementCacheCount(String id, Object resource){
-		resourceMap.put(id, resource);
-		if(resourceCount.containsKey(id)){
-			Integer integer = (Integer)resourceCount.get(id);
-			Integer newInteger = new Integer(integer.intValue() + 1);
-			resourceCount.put(id, newInteger);
-		} else {
-			resourceCount.put(id, new Integer(1));
-		}
-	}
-	
-	private static void decrementCacheCount(String id){
-		if(resourceCount.containsKey(id)){
-			Integer integer = (Integer)resourceCount.get(id);
-			if(integer.intValue() > 1){
-				Integer newInteger = new Integer(integer.intValue() - 1);
-				resourceCount.put(id, newInteger);
-			} else {
-				resourceCount.remove(id);
-				resourceMap.remove(id);
-			}
-		} else {
-			resourceMap.remove(id);
-		}
-	}
-	
-
 	private IDOMModel initializeXMLModel(IFile file, boolean forWrite) throws UnsupportedEncodingException, IOException {
 		if (file == null || !file.exists())
 			throw new FileNotFoundException((file == null) ? "null" : file.getFullPath().toOSString()); //$NON-NLS-1$
 		try {
 			IModelManager manager = getModelManager();
-			String id = manager.calculateId(file);
-			Object cachedResource = getCachedResource(id);
-			boolean needCopy = false;
-			if(null != cachedResource && cachedResource != resource){
-				needCopy = true;
-			} else {
-				incrementCacheCount(id, resource);
-			}
-			
+			String id = manager.calculateId(file);			
 			if (forWrite) {
 				IDOMModel mod = (IDOMModel)manager.getExistingModelForEdit(id);
 				if (mod == null)
 					setXMLModel((IDOMModel) manager.getModelForEdit(file));
 				else {
-					if(needCopy)
-						try {
-							String uniqueID = getUniqueID(id);
-							incrementCacheCount(id, resource);
-							setXMLModel((IDOMModel) manager.copyModelForEdit(id, uniqueID));
-						} catch (ResourceInUse e) {
-							Logger.logException(e);
-						}
-					else
-						setXMLModel(mod);
+					setXMLModel(mod);
 				}
 			}
 			else {
@@ -380,16 +318,7 @@
 				if (mod == null)
 					setXMLModel((IDOMModel) manager.getModelForRead(file));
 				else {
-					if(needCopy)
-						try {
-							String uniqueID = getUniqueID(id);
-							incrementCacheCount(id, resource);
-							setXMLModel((IDOMModel) manager.copyModelForEdit(id, uniqueID));
-						} catch (ResourceInUse e) {
-							Logger.logException(e);
-						}
-					else
-						setXMLModel(mod);
+					setXMLModel(mod);
 				}
 			}
 			setXMLModelId(getXMLModel().getId());
@@ -458,14 +387,17 @@
 			return;
 		try {
 			if (aboutToChangeNode != null && model.getStructuredDocument() != null && model.getStructuredDocument().getFirstStructuredDocumentRegion() != aboutToChangeNode) {
-				modelAccessForWrite();
+				String id = getModelManagerId();
+				IStructuredModel tempModel = null;
 				try {
+					tempModel = getModelManager().getExistingModelForEdit(id);
 					xmlModelReverted = true;
 					resource.unload();
 				}
 				finally {
-					if (getXMLModel() != null)
-						getXMLModel().releaseFromEdit();
+					if (tempModel != null) {
+						tempModel.releaseFromEdit();
+					}
 				}
 			}
 		}
@@ -479,7 +411,8 @@
 			resource.setModified(false);
 			long stamp = WorkbenchResourceHelper.computeModificationStamp(resource);
 			WorkbenchResourceHelper.setSynhronizationStamp(resource, stamp);
-			ResourceSetWorkbenchEditSynchronizer synchronizer = (ResourceSetWorkbenchEditSynchronizer) ((ProjectResourceSet) resource.getResourceSet()).getSynchronizer();
+			IProject proj = WorkbenchResourceHelper.getProject(resource);
+			ResourceSetWorkbenchEditSynchronizer synchronizer = (ResourceSetWorkbenchEditSynchronizer) ((ProjectResourceSet) WorkbenchResourceHelperBase.getResourceSet(proj)).getSynchronizer();
 			IFile aFile = WorkbenchResourceHelper.getFile(resource);
 			synchronizer.preSave(aFile);
 		}
