https://bugs.eclipse.org/bugs/show_bug.cgi?id=77412
diff --git a/deprecated/examples/org.eclipse.uml2.examples.emof2ecore/src/org/eclipse/uml2/examples/emof2ecore/EMOF2EcorePostProcessor.java b/deprecated/examples/org.eclipse.uml2.examples.emof2ecore/src/org/eclipse/uml2/examples/emof2ecore/EMOF2EcorePostProcessor.java
index a2482b7..ad6853e 100644
--- a/deprecated/examples/org.eclipse.uml2.examples.emof2ecore/src/org/eclipse/uml2/examples/emof2ecore/EMOF2EcorePostProcessor.java
+++ b/deprecated/examples/org.eclipse.uml2.examples.emof2ecore/src/org/eclipse/uml2/examples/emof2ecore/EMOF2EcorePostProcessor.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  * 
- * $Id: EMOF2EcorePostProcessor.java,v 1.2 2004/12/22 15:15:27 khussey Exp $
+ * $Id: EMOF2EcorePostProcessor.java,v 1.3 2004/12/22 21:12:17 khussey Exp $
  */
 package org.eclipse.uml2.examples.emof2ecore;
 
@@ -17,6 +17,7 @@
 
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
@@ -46,14 +47,26 @@
 
 	public static final String copyright = "Copyright (c) 2004 IBM Corporation and others."; //$NON-NLS-1$
 
+	protected static final boolean DEBUG = false;
+
 	protected AnyType getExtension(EMOF2EcoreResource resource, EObject eObject) {
 		return (AnyType) resource.getEObjectToExtensionMap().get(eObject);
 	}
 
+	protected AnyType putExtension(EMOF2EcoreResource resource,
+			EObject eObject, AnyType extension) {
+		return (AnyType) resource.getEObjectToExtensionMap().put(eObject,
+			extension);
+	}
+
+	protected AnyType removeExtension(EMOF2EcoreResource resource,
+			EObject eObject) {
+		return (AnyType) resource.getEObjectToExtensionMap().remove(eObject);
+	}
+
 	protected Object getValue(FeatureMap featureMap, String name) {
 
 		for (Iterator entries = featureMap.iterator(); entries.hasNext();) {
-
 			FeatureMap.Entry entry = (FeatureMap.Entry) entries.next();
 
 			if (name.equals(entry.getEStructuralFeature().getName())) {
@@ -70,7 +83,6 @@
 		AnyType extension = getExtension(resource, eObject);
 
 		if (null != extension) {
-
 			AnyType ecoreExtension = (AnyType) getValue(extension.getMixed(),
 				"Extension");
 
@@ -182,14 +194,21 @@
 		EcoreSwitch ecoreSwitch = new EcoreSwitch() {
 
 			public Object caseEModelElement(EModelElement eModelElement) {
-				AnyType extension = getExtension(resource, eModelElement);
+				AnyType extension = removeExtension(resource, eModelElement);
 
 				if (null != extension) {
 					System.out.println(eModelElement);
 					System.out.println("->");
 					System.out.println(extension);
 
-					resource.getEObjectToExtensionMap().remove(eModelElement);
+					if (DEBUG) {
+						EAnnotation eAnnotation = EcoreFactory.eINSTANCE
+							.createEAnnotation();
+						eAnnotation.setEModelElement(eModelElement);
+						eAnnotation.setSource(ExtendedMetaData.ANNOTATION_URI);
+
+						eAnnotation.getContents().add(extension);
+					}
 				}
 
 				return super.caseEModelElement(eModelElement);
@@ -216,6 +235,9 @@
 						}
 
 						if (property != eStructuralFeature) {
+							putExtension(resource, eStructuralFeature,
+								removeExtension(resource, property));
+
 							String isComposite = (String) getValue(extension
 								.getAnyAttribute(), "isComposite");