[276128] EMF template changes require updates to Package init() required.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java
index 8a78dd9..8d8209d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java
@@ -9,7 +9,7 @@
  *   IBM - initial API and implementation
  *   Kenn Hussey (Embarcadero Technologies) - 205188, 247980
  *
- * $Id: UMLPackageImpl.java,v 1.23 2009/04/22 14:26:52 khussey Exp $
+ * $Id: UMLPackageImpl.java,v 1.24 2009/05/15 20:43:20 jbruck Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -1934,20 +1934,10 @@
 	private static boolean isInited = false;
 
 	/**
-	 * Creates, registers, and initializes the <b>Package</b> for this
-	 * model, and for any others upon which it depends.  Simple
-	 * dependencies are satisfied by calling this method on all
-	 * dependent packages before doing anything else.  This method drives
-	 * initialization for interdependent packages directly, in parallel
-	 * with this package, itself.
-	 * <p>Of this package and its interdependencies, all packages which
-	 * have not yet been registered by their URI values are first created
-	 * and registered.  The packages are then initialized in two steps:
-	 * meta-model objects for all of the packages are created before any
-	 * are initialized, since one package's meta-model objects may refer to
-	 * those of another.
-	 * <p>Invocation of this method will not affect any packages that have
-	 * already been initialized.
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link UMLPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #eNS_URI
@@ -1987,6 +1977,8 @@
 		// Mark meta-data to indicate it can't be changed
 		theUMLPackage.freeze();
 
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, theUMLPackage);
 		return theUMLPackage;
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
index 8d61781..b601405 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
@@ -9,7 +9,7 @@
  *   IBM - initial API and implementation
  *   Kenn Hussey (Embarcadero Technologies) - 271470
  *
- * $Id: PackageOperations.java,v 1.39 2009/04/24 14:28:01 jbruck Exp $
+ * $Id: PackageOperations.java,v 1.40 2009/05/15 20:43:20 jbruck Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -836,7 +836,7 @@
 			.getProfileApplication(profile);
 
 		if (profileApplication == null && recurse) {
-			
+
 			for (Iterator<org.eclipse.uml2.uml.Package> otherApplyingPackages = ProfileApplicationHelper.INSTANCE
 				.getOtherApplyingPackages(package_).iterator(); otherApplyingPackages
 				.hasNext()