diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML2122UMLResourceHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML2122UMLResourceHandler.java
index 83b6894..ada391c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML2122UMLResourceHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML2122UMLResourceHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UML2122UMLResourceHandler.java,v 1.2 2008/11/04 14:29:52 khussey Exp $
+ * $Id: UML2122UMLResourceHandler.java,v 1.3 2009/02/24 23:19:53 jbruck Exp $
  */
 package org.eclipse.uml2.uml.resource;
 
@@ -26,6 +26,7 @@
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.util.ExtendedMetaData;
 import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.emf.ecore.xmi.XMLResource;
 import org.eclipse.emf.ecore.xmi.impl.BasicResourceHandler;
 import org.eclipse.emf.ecore.xml.type.AnyType;
@@ -52,7 +53,9 @@
 public class UML2122UMLResourceHandler
 		extends BasicResourceHandler {
 
-	protected static final boolean DEBUG = true;
+	protected static final boolean DEBUG = false;
+	
+	protected boolean resolveProxies = true;
 
 	protected static final String STEREOTYPE__TIME_EVENT = "TimeEvent"; //$NON-NLS-1$
 
@@ -317,8 +320,14 @@
 					}
 				}
 
-				for (EObject eContent : eObject.eContents()) {
-					doSwitch(eContent);
+				Iterator<?> contents = resolveProxies
+					? eObject.eContents().iterator()
+					: ((InternalEList<?>) eObject.eContents()).basicIterator();
+
+				if (contents != null) {
+					while (contents.hasNext()) {
+						doSwitch((EObject) contents.next());
+					}
 				}
 
 				return eObject;
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
index 0415450..bc9b922 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  * 
- * $Id: UML22UMLResourceHandler.java,v 1.36 2008/10/03 20:50:37 jbruck Exp $
+ * $Id: UML22UMLResourceHandler.java,v 1.37 2009/02/24 23:19:53 jbruck Exp $
  */
 package org.eclipse.uml2.uml.resource;
 
@@ -128,6 +128,8 @@
 
 	protected static final boolean DEBUG = false;
 
+	protected boolean resolveProxies = true;
+	
 	protected static final String STEREOTYPE__ACTION = "Action"; //$NON-NLS-1$
 
 	protected static final String STEREOTYPE__ACTIVITY = "Activity"; //$NON-NLS-1$
@@ -1927,8 +1929,14 @@
 					}
 				}
 
-				for (EObject eContent : eObject.eContents()) {
-					doSwitch(eContent);
+				Iterator<?> contents = resolveProxies
+					? eObject.eContents().iterator()
+					: ((InternalEList<?>) eObject.eContents()).basicIterator();
+
+				if (contents != null) {
+					while (contents.hasNext()) {
+						doSwitch((EObject) contents.next());
+					}
 				}
 
 				return eObject;
