*** empty log message ***
diff --git a/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java b/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java
index 355a907..b87e808 100644
--- a/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java
+++ b/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CreateExtensionAction.java,v 1.2 2004/05/28 05:13:28 khussey Exp $
+ * $Id: CreateExtensionAction.java,v 1.3 2004/06/02 17:55:34 khussey Exp $
  */
 package org.eclipse.uml2.examples.ui.actions;
 
@@ -80,7 +80,7 @@
 					.getEClassifier(((org.eclipse.uml2.Class) referencedMetaclasses
 						.next()).getName());
 
-				if (!stereotype.getExtendedEClasses().contains(eClassifier)) {
+				if (!stereotype.getAllExtendedEClasses().contains(eClassifier)) {
 
 					choiceOfValues.add(eClassifier);
 				}
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java
index c9ae155..a165bea 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: Stereotype.java,v 1.4 2004/05/28 05:13:45 khussey Exp $
+ * $Id: Stereotype.java,v 1.5 2004/06/02 17:55:37 khussey Exp $
  */
 package org.eclipse.uml2;
 
@@ -50,12 +50,20 @@
 	public Extension createExtension(EClass eClass, boolean required);
 
 	/**
-	 * Retrieves the set of Ecore classes extended by this stereotype,
-	 * including the Ecore classes extended by its super(stereo)types.
+	 * Retrieves the set of Ecore classes extended by this stereotype, including
+	 * the Ecore classes extended by its super(stereo)types.
 	 * 
-	 * @return The Ecore classes extended by this stereotype.
+	 * @return The Ecore classes extended by this stereotype and its
+	 *         super(stereo)types.
 	 */
-	public Set getExtendedEClasses();
+	public Set getAllExtendedEClasses();
+
+	/**
+	 * Retrieves the metaclasses extended by this stereotype.
+	 * 
+	 * @return The metaclasses extended by this stereotype.
+	 */
+	public Set getExtendedMetaclasses();
 
 	/**
 	 * Retrieves the profile that owns this stereotype.
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
index 6ba6895..50dd028 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StereotypeImpl.java,v 1.15 2004/06/02 05:02:25 khussey Exp $
+ * $Id: StereotypeImpl.java,v 1.16 2004/06/02 17:55:37 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -720,21 +720,47 @@
 	 * 
 	 * @see org.eclipse.uml2.Stereotype#getExtendedEClasses()
 	 */
-	public Set getExtendedEClasses() {
+	public Set getAllExtendedEClasses() {
 
 		try {
-			Method method = getClass().getMethod("getExtendedEClasses", null); //$NON-NLS-1$
-			Set extendedEClasses = (Set) getCacheAdapter().get(this, method);
+			Method method = getClass().getMethod("getAllExtendedEClasses", null); //$NON-NLS-1$
+			Set allExtendedEClasses = (Set) getCacheAdapter().get(this, method);
 
-			if (null == extendedEClasses) {
-				extendedEClasses = StereotypeOperations
-					.getExtendedEClasses(this);
-				getCacheAdapter().put(this, method, extendedEClasses);
+			if (null == allExtendedEClasses) {
+				allExtendedEClasses = StereotypeOperations
+					.getAllExtendedEClasses(this);
+				getCacheAdapter().put(this, method, allExtendedEClasses);
 			}
 
-			return extendedEClasses;
+			return allExtendedEClasses;
 		} catch (Exception e) {
-			return StereotypeOperations.getExtendedEClasses(this);
+			return StereotypeOperations.getAllExtendedEClasses(this);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.uml2.Stereotype#getExtendedMetaclasses()
+	 */
+	public Set getExtendedMetaclasses() {
+
+		try {
+			Method method = getClass()
+				.getMethod("getExtendedMetaclasses", null); //$NON-NLS-1$
+			Set extendedMetaclasses = (Set) getCacheAdapter().get(eResource(),
+				this, method);
+
+			if (null == extendedMetaclasses) {
+				extendedMetaclasses = StereotypeOperations
+					.getExtendedMetaclasses(this);
+				getCacheAdapter().put(eResource(), this, method,
+					extendedMetaclasses);
+			}
+
+			return extendedMetaclasses;
+		} catch (Exception e) {
+			return StereotypeOperations.getExtendedMetaclasses(this);
 		}
 	}
 
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java
index a2a24b6..79b9f06 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StereotypeOperations.java,v 1.7 2004/06/01 20:05:27 khussey Exp $
+ * $Id: StereotypeOperations.java,v 1.8 2004/06/02 17:55:37 khussey Exp $
  */
 package org.eclipse.uml2.internal.operation;
 
@@ -161,14 +161,15 @@
 	 * 
 	 * @param stereotype
 	 *            The stereotype for which to retrieve the Ecore classes.
-	 * @return The Ecore classes extended by the stereotype.
+	 * @return The Ecore classes extended by the stereotype and its
+	 *         super(stereo)types.
 	 */
-	public static Set getExtendedEClasses(Stereotype stereotype) {
-		Set extendedEClasses = new HashSet();
+	public static Set getAllExtendedEClasses(Stereotype stereotype) {
+		Set allExtendedEClasses = new HashSet();
 
-		getExtendedEClassesHelper(stereotype, extendedEClasses);
+		getAllExtendedEClassesHelper(stereotype, allExtendedEClasses);
 
-		return extendedEClasses;
+		return allExtendedEClasses;
 	}
 
 	/**
@@ -178,38 +179,32 @@
 	 * 
 	 * @param stereotype
 	 *            The stereotype for which to add the Ecore classes.
-	 * @param extendedEClasses
+	 * @param allExtendedEClasses
 	 *            The set to which to add the Ecore classes.
 	 */
-	protected static void getExtendedEClassesHelper(Stereotype stereotype,
-			Set extendedEClasses) {
+	protected static void getAllExtendedEClassesHelper(Stereotype stereotype,
+			Set allExtendedEClasses) {
 
-		ownedAttributesLoop : for (Iterator ownedAttributes = stereotype
-			.getOwnedAttributes().iterator(); ownedAttributes.hasNext();) {
+		extendedMetaclassesLoop : for (Iterator extendedMetaclasses = stereotype
+			.getExtendedMetaclasses().iterator(); extendedMetaclasses.hasNext();) {
 
-			Property property = (Property) ownedAttributes.next();
-			Type type = property.getType();
+			EClassifier eClassifier = UML2Package.eINSTANCE
+				.getEClassifier(((org.eclipse.uml2.Class) extendedMetaclasses
+					.next()).getName());
 
-			if (org.eclipse.uml2.Class.class.isInstance(type)
-				&& Extension.class.isInstance(property.getAssociation())) {
+			if (EClass.class.isInstance(eClassifier)) {
 
-				EClassifier eClassifier = UML2Package.eINSTANCE
-					.getEClassifier(type.getName());
+				for (Iterator eClasses = allExtendedEClasses.iterator(); eClasses
+					.hasNext();) {
 
-				if (EClass.class.isInstance(eClassifier)) {
+					EClass eClass = (EClass) eClasses.next();
 
-					for (Iterator eClasses = extendedEClasses.iterator(); eClasses
-						.hasNext();) {
-
-						EClass eClass = (EClass) eClasses.next();
-
-						if (((EClass) eClassifier).isSuperTypeOf(eClass)) {
-							continue ownedAttributesLoop;
-						}
+					if (((EClass) eClassifier).isSuperTypeOf(eClass)) {
+						continue extendedMetaclassesLoop;
 					}
-
-					extendedEClasses.add(eClassifier);
 				}
+
+				allExtendedEClasses.add(eClassifier);
 			}
 		}
 
@@ -220,13 +215,42 @@
 				.getGeneral();
 
 			if (Stereotype.class.isInstance(general)) {
-				getExtendedEClassesHelper((Stereotype) general,
-					extendedEClasses);
+				getAllExtendedEClassesHelper((Stereotype) general,
+					allExtendedEClasses);
 			}
 		}
 	}
 
 	/**
+	 * Retrieves the metaclasses extended by the specified stereotype.
+	 * 
+	 * @param stereotype
+	 *            The stereotype for which to retrieve the metaclasses.
+	 * @return The metaclasses extended by the stereotype.
+	 */
+	public static Set getExtendedMetaclasses(Stereotype stereotype) {
+		Set extendedMetaclasses = new HashSet();
+
+		if (null != stereotype) {
+
+			for (Iterator ownedAttributes = stereotype.getOwnedAttributes()
+				.iterator(); ownedAttributes.hasNext();) {
+
+				Property property = (Property) ownedAttributes.next();
+				Type type = property.getType();
+
+				if (org.eclipse.uml2.Class.class.isInstance(type)
+					&& Extension.class.isInstance(property.getAssociation())) {
+
+					extendedMetaclasses.add(type);
+				}
+			}
+		}
+
+		return extendedMetaclasses;
+	}
+
+	/**
 	 * Applies the specified stereotype to the specified element.
 	 * 
 	 * @param stereotype
@@ -285,7 +309,7 @@
 			throw new IllegalArgumentException(String.valueOf(eClass));
 		}
 
-		for (Iterator extendedEClasses = stereotype.getExtendedEClasses()
+		for (Iterator extendedEClasses = stereotype.getAllExtendedEClasses()
 			.iterator(); extendedEClasses.hasNext();) {
 
 			if (eClass.isSuperTypeOf((EClass) extendedEClasses.next())) {
@@ -387,7 +411,7 @@
 					&& null != getEClass(stereotype, appliedVersion)) {
 
 					for (Iterator extendedEClasses = stereotype
-						.getExtendedEClasses().iterator(); extendedEClasses
+						.getAllExtendedEClasses().iterator(); extendedEClasses
 						.hasNext();) {
 
 						if (((EClass) extendedEClasses.next())