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 e55991f..8d61781 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
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation, Embarcadero Technologies, 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,8 +7,9 @@
  *
  * Contributors:
  *   IBM - initial API and implementation
+ *   Kenn Hussey (Embarcadero Technologies) - 271470
  *
- * $Id: PackageOperations.java,v 1.38 2008/11/04 14:30:41 khussey Exp $
+ * $Id: PackageOperations.java,v 1.39 2009/04/24 14:28:01 jbruck Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -756,13 +757,13 @@
 
 		if (appliedProfile == null && recurse) {
 
-			for (Element owner = package_.getOwner(); owner != null
-				&& appliedProfile == null; owner = owner.getOwner()) {
+			for (Iterator<org.eclipse.uml2.uml.Package> otherApplyingPackages = ProfileApplicationHelper.INSTANCE
+				.getOtherApplyingPackages(package_).iterator(); otherApplyingPackages
+				.hasNext()
+				&& appliedProfile == null;) {
 
-				if (owner instanceof org.eclipse.uml2.uml.Package) {
-					appliedProfile = ((org.eclipse.uml2.uml.Package) owner)
-						.getAppliedProfile(qualifiedName);
-				}
+				appliedProfile = otherApplyingPackages.next()
+					.getAppliedProfile(qualifiedName);
 			}
 		}
 
@@ -783,10 +784,10 @@
 		EList<ProfileApplication> allProfileApplications = new UniqueEList.FastCompare<ProfileApplication>(
 			package_.getProfileApplications());
 
-		for (org.eclipse.uml2.uml.Package owningPackage : package_
-			.allOwningPackages()) {
+		for (org.eclipse.uml2.uml.Package applyingPackage : ProfileApplicationHelper.INSTANCE
+			.getOtherApplyingPackages(package_)) {
 
-			allProfileApplications.addAll(owningPackage
+			allProfileApplications.addAll(applyingPackage
 				.getProfileApplications());
 		}
 
@@ -835,14 +836,14 @@
 			.getProfileApplication(profile);
 
 		if (profileApplication == null && recurse) {
+			
+			for (Iterator<org.eclipse.uml2.uml.Package> otherApplyingPackages = ProfileApplicationHelper.INSTANCE
+				.getOtherApplyingPackages(package_).iterator(); otherApplyingPackages
+				.hasNext()
+				&& profileApplication == null;) {
 
-			for (Element owner = package_.getOwner(); owner != null
-				&& profileApplication == null; owner = owner.getOwner()) {
-
-				if (owner instanceof org.eclipse.uml2.uml.Package) {
-					profileApplication = ((org.eclipse.uml2.uml.Package) owner)
-						.getProfileApplication(profile);
-				}
+				profileApplication = otherApplyingPackages.next()
+					.getProfileApplication(profile);
 			}
 		}
 
@@ -893,10 +894,10 @@
 		EList<Profile> allAppliedProfiles = getAppliedProfiles(package_,
 			new UniqueEList.FastCompare<Profile>());
 
-		for (org.eclipse.uml2.uml.Package owningPackage : package_
-			.allOwningPackages()) {
+		for (org.eclipse.uml2.uml.Package applyingPackage : ProfileApplicationHelper.INSTANCE
+			.getOtherApplyingPackages(package_)) {
 
-			getAppliedProfiles(owningPackage, allAppliedProfiles);
+			getAppliedProfiles(applyingPackage, allAppliedProfiles);
 		}
 
 		return ECollections.unmodifiableEList(allAppliedProfiles);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
index 734db6a..ba5d50c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
@@ -7,10 +7,10 @@
  *
  * Contributors:
  *   IBM - initial API and implementation
- *   Kenn Hussey (Embarcadero Technologies) - 199624, 184249, 204406, 208125, 204200, 213218, 213903, 220669, 208016, 226396
+ *   Kenn Hussey (Embarcadero Technologies) - 199624, 184249, 204406, 208125, 204200, 213218, 213903, 220669, 208016, 226396, 271470
  *   Nicolas Rouquette (JPL) - 260120
  *
- * $Id: UMLUtil.java,v 1.82 2009/04/23 20:31:13 jbruck Exp $
+ * $Id: UMLUtil.java,v 1.83 2009/04/24 14:28:00 jbruck Exp $
  */
 package org.eclipse.uml2.uml.util;
 
@@ -131,6 +131,34 @@
 		extends UML2Util {
 
 	/**
+	 * The ProfileApplicationHelper can be overridden to change the way packages
+	 * are traversed when looking for profile applications relevant to an
+	 * element in a given package.
+	 * 
+	 * @since 3.0
+	 */
+	public static class ProfileApplicationHelper {
+
+		public static final ProfileApplicationHelper INSTANCE = createProfileApplicationHelper();
+
+		private static ProfileApplicationHelper createProfileApplicationHelper() {
+			ProfileApplicationHelper profileApplicationHelper = UML2Util
+				.loadClassFromSystemProperty("org.eclipse.uml2.uml.util.UMLUtil$ProfileApplicationHelper.INSTANCE"); //$NON-NLS-1$
+
+			if (profileApplicationHelper != null) {
+				return profileApplicationHelper;
+			}
+
+			return new ProfileApplicationHelper();
+		}
+
+		public Iterable<org.eclipse.uml2.uml.Package> getOtherApplyingPackages(
+				org.eclipse.uml2.uml.Package package_) {
+			return package_.allOwningPackages();
+		}
+	}
+	
+	/**
 	 * The StereotypeApplicationHelper can be overridden to change the default
 	 * location of applied stereotypes. 
 	 * Typically, stereotype applications are placed in the same location as
@@ -7141,7 +7169,7 @@
 							&& !source.equals(ANNOTATION__UNION)) {
 
 							StringBuffer stringBuffer = new StringBuffer(
-								escapeString(source, " ="));
+								escapeString(source, " =")); //$NON-NLS-1$
 
 							for (Map.Entry<String, String> entry : eAnnotation
 								.getDetails()) {
