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");
 
