[238160] Not finding adapter after target object removed
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
index cd6a7a2..e0144f8 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
@@ -481,8 +481,8 @@
 		EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(value, EMF2DOMAdapter.ADAPTER_CLASS);
 		if (adapter != null) {
 			// Remove the adapter from BOTH the MOF Object and the DOM Nodes
-			value.eAdapters().remove(adapter);
 			removeAdapters(adapter.getNode());
+			value.eAdapters().remove(adapter);
 		}
 
 		EStructuralFeature feature = translator.getFeature();
@@ -607,8 +607,8 @@
 	protected EMF2DOMAdapter getExistingAdapter(EObject refObject) {
 		EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(refObject, EMF2DOMAdapter.ADAPTER_CLASS);
 		if (adapter != null && adapter.isMOFProxy()) {
-			refObject.eAdapters().remove(adapter);
 			removeDOMAdapter(adapter.getNode(), adapter);
+			refObject.eAdapters().remove(adapter);
 			adapter = null;
 		}
 		return adapter;
@@ -702,6 +702,12 @@
 	 * Remove the DOM adapters from the node AND all its child nodes, recursively.
 	 */
 	public void removeAdapters(Node node) {
+		NodeList nl = node.getChildNodes();
+		for (int i = 0; i < nl.getLength(); i++) {
+			Node n = nl.item(i);
+			removeAdapters(n);
+		}
+		
 		EMF2DOMAdapter adapter = primGetExistingAdapter(node);
 		if (adapter != null) {
 			// Remove the adapter from both the DOM node and the MOF Object.
@@ -712,12 +718,6 @@
 					localTarget.eAdapters().remove(adapter);
 			}
 		}
-
-		NodeList nl = node.getChildNodes();
-		for (int i = 0; i < nl.getLength(); i++) {
-			Node n = nl.item(i);
-			removeAdapters(n);
-		}
 	}
 
 	/**
@@ -802,8 +802,8 @@
 		EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getAdapter(mofObject.eAdapters(), EMF2DOMAdapter.ADAPTER_CLASS);
 
 		if (adapter != null && adapter.isMOFProxy()) {
-			mofObject.eAdapters().remove(adapter);
 			removeAdapters(adapter.getNode());
+			mofObject.eAdapters().remove(adapter);
 			adapter = null;
 		}
 		if (adapter == null)