[458737] Ensuring proxies are resolved during migration (if specified).
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML212UMLResourceHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML212UMLResourceHandler.java
index 0407740..b14fe1f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML212UMLResourceHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML212UMLResourceHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2014 IBM Corporation, CEA, and others.
+ * Copyright (c) 2008, 2015 IBM Corporation, CEA, 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
@@ -7,7 +7,7 @@
  *
  * Contributors:
  *   IBM - initial API and implementation
- *   Kenn Hussey (CEA) - 327039, 351774, 405374, 418466
+ *   Kenn Hussey (CEA) - 327039, 351774, 405374, 418466, 458737
  *
  */
 package org.eclipse.uml2.uml.resource;
@@ -156,7 +156,13 @@
 				value = getValue(extension.getMixed(), name, remove);
 
 				if (value instanceof EObject) {
-					return (EObject) value;
+					EObject eObject = (EObject) value;
+
+					if (eObject.eIsProxy() && resolveProxies) {
+						eObject = EcoreUtil.resolve(eObject, resource);
+					}
+
+					return eObject;
 				}
 			} else if (value instanceof String && resource != null) {
 				return resource.getEObject((String) value);
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 f115702..075fa7c 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, 2014 IBM Corporation, CEA, and others.
+ * Copyright (c) 2006, 2015 IBM Corporation, CEA, 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
@@ -7,7 +7,7 @@
  *
  * Contributors:
  *   IBM - initial API and implementation
- *   Kenn Hussey (CEA) - 327039, 351774, 399544, 418466
+ *   Kenn Hussey (CEA) - 327039, 351774, 399544, 418466, 458737
  * 
  */
 package org.eclipse.uml2.uml.resource;
@@ -232,7 +232,13 @@
 				value = getValue(extension.getMixed(), name, remove);
 
 				if (value instanceof EObject) {
-					return (EObject) value;
+					EObject eObject = (EObject) value;
+
+					if (eObject.eIsProxy() && resolveProxies) {
+						eObject = EcoreUtil.resolve(eObject, resource);
+					}
+
+					return eObject;
 				}
 			} else if (value instanceof String && resource != null) {
 				return resource.getEObject((String) value);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML302UMLResourceHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML302UMLResourceHandler.java
index 9065246..6e174a7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML302UMLResourceHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML302UMLResourceHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014 CEA and others.
+ * Copyright (c) 2011, 2015 CEA 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
@@ -7,7 +7,7 @@
  *
  * Contributors:
  *   Kenn Hussey (CEA) - initial API and implementation
- *   Kenn Hussey (CEA) - 351774, 405374, 418466
+ *   Kenn Hussey (CEA) - 351774, 405374, 418466, 458737
  *
  */
 package org.eclipse.uml2.uml.resource;
@@ -141,7 +141,13 @@
 				value = getValue(extension.getMixed(), name, remove);
 
 				if (value instanceof EObject) {
-					return (EObject) value;
+					EObject eObject = (EObject) value;
+
+					if (eObject.eIsProxy() && resolveProxies) {
+						eObject = EcoreUtil.resolve(eObject, resource);
+					}
+
+					return eObject;
 				}
 			} else if (value instanceof String && resource != null) {
 				return resource.getEObject((String) value);