[464702] Adding edit support for updated superset/subset properties.
diff --git a/plugins/org.eclipse.uml2.uml.edit/plugin.properties b/plugins/org.eclipse.uml2.uml.edit/plugin.properties
index ca590cc..f014140 100644
--- a/plugins/org.eclipse.uml2.uml.edit/plugin.properties
+++ b/plugins/org.eclipse.uml2.uml.edit/plugin.properties
@@ -1,4 +1,4 @@
-# Copyright (c) 2005, 2014 IBM Corporation, Embarcadero Technologies, CEA, and others.
+# Copyright (c) 2005, 2016 IBM Corporation, Embarcadero Technologies, CEA, 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,7 +7,7 @@
 # Contributors:
 #   IBM - initial API and implementation
 #   Kenn Hussey (Embarcadero Technologies) - 204200
-#   Kenn Hussey (CEA) - 327039, 351774, 418466
+#   Kenn Hussey (CEA) - 327039, 351774, 418466, 464702
 #
 
 # NLS_MESSAGEFORMAT_VAR
@@ -937,3 +937,6 @@
 
 _UI_UML_category = UML
 _UI_ActivityContent_type = Activity Content
+_UI_Namespace_ownedElementImport_feature = Element Import
+_UI_Namespace_ownedPackageImport_feature = Package Import
+_UI_Namespace_ownedConstraint_feature = Owned Rule
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ActivityItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ActivityItemProvider.java
index 1bda180..0e312a8 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ActivityItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ActivityItemProvider.java
@@ -646,7 +646,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__PRECONDITION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java
index 3f5c27c..82bf55b 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java
@@ -244,6 +244,8 @@
 			childrenFeatures.add(UMLPackage.Literals.BEHAVIOR__OWNED_PARAMETER);
 			childrenFeatures
 				.add(UMLPackage.Literals.BEHAVIOR__OWNED_PARAMETER_SET);
+			childrenFeatures.add(UMLPackage.Literals.BEHAVIOR__POSTCONDITION);
+			childrenFeatures.add(UMLPackage.Literals.BEHAVIOR__PRECONDITION);
 		}
 		return childrenFeatures;
 	}
@@ -299,13 +301,13 @@
 
 		switch (notification.getFeatureID(Behavior.class)) {
 			case UMLPackage.BEHAVIOR__IS_REENTRANT :
-			case UMLPackage.BEHAVIOR__POSTCONDITION :
-			case UMLPackage.BEHAVIOR__PRECONDITION :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), false, true));
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER :
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER_SET :
+			case UMLPackage.BEHAVIOR__POSTCONDITION :
+			case UMLPackage.BEHAVIOR__PRECONDITION :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), true, false));
 				return;
@@ -386,7 +388,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__PRECONDITION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
@@ -410,7 +412,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createAddCommand(EditingDomain domain, EObject owner,
@@ -441,7 +443,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
@@ -449,6 +451,7 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SupersetRemoveCommand(domain, owner, feature,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.BEHAVIOR__POSTCONDITION,
 					UMLPackage.Literals.BEHAVIOR__PRECONDITION},
 				collection);
@@ -466,7 +469,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createReplaceCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
@@ -494,6 +497,7 @@
 			return new SubsetSupersetReplaceCommand(domain, owner, feature,
 				null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.BEHAVIOR__POSTCONDITION,
 					UMLPackage.Literals.BEHAVIOR__PRECONDITION},
 				value, collection);
@@ -513,7 +517,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createSetCommand(EditingDomain domain, EObject owner,
@@ -539,6 +543,7 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SubsetSupersetSetCommand(domain, owner, feature, null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.BEHAVIOR__POSTCONDITION,
 					UMLPackage.Literals.BEHAVIOR__PRECONDITION},
 				value);
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/CommentItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/CommentItemProvider.java
index 71b36be..b1ddf96 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/CommentItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/CommentItemProvider.java
@@ -129,8 +129,9 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		return appendString(appendType(
-			appendKeywords(new StringBuffer(), object), "_UI_Comment_type"), //$NON-NLS-1$
+		return appendString(
+			appendType(appendKeywords(new StringBuffer(), object),
+				"_UI_Comment_type"), //$NON-NLS-1$
 			crop(((Comment) object).getBody())).toString();
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ComponentItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ComponentItemProvider.java
index 0351273..dbdfc96 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ComponentItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ComponentItemProvider.java
@@ -570,7 +570,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.NAMED_ELEMENT__NAME_EXPRESSION
 			|| childFeature == UMLPackage.Literals.COMPONENT__PACKAGED_ELEMENT
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__REPRESENTATION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__OWNED_USE_CASE
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ConditionalNodeItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ConditionalNodeItemProvider.java
index f8d191c..98ae460 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ConditionalNodeItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ConditionalNodeItemProvider.java
@@ -298,7 +298,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.ACTION__LOCAL_POSTCONDITION
 			|| childFeature == UMLPackage.Literals.ACTION__LOCAL_PRECONDITION
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_INPUT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__NODE
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_OUTPUT
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ExpansionRegionItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ExpansionRegionItemProvider.java
index 6797187..48d0fa0 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ExpansionRegionItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ExpansionRegionItemProvider.java
@@ -203,7 +203,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.ACTION__LOCAL_POSTCONDITION
 			|| childFeature == UMLPackage.Literals.ACTION__LOCAL_PRECONDITION
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_INPUT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__NODE
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_OUTPUT;
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FinalStateItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FinalStateItemProvider.java
index dd7af06..5979110 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FinalStateItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FinalStateItemProvider.java
@@ -133,7 +133,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.STATE__STATE_INVARIANT
 			|| childFeature == UMLPackage.Literals.STATE__DO_ACTIVITY
 			|| childFeature == UMLPackage.Literals.STATE__ENTRY
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FunctionBehaviorItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FunctionBehaviorItemProvider.java
index 2146563..3889094 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FunctionBehaviorItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/FunctionBehaviorItemProvider.java
@@ -133,7 +133,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__PRECONDITION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionItemProvider.java
index a807226..7a0379a 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionItemProvider.java
@@ -609,7 +609,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__PRECONDITION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionOperandItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionOperandItemProvider.java
index c6d89c1..64baaab 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionOperandItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/InteractionOperandItemProvider.java
@@ -376,7 +376,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.INTERACTION_OPERAND__GUARD;
 
 		if (qualify) {
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/LoopNodeItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/LoopNodeItemProvider.java
index e104d25..614ca15 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/LoopNodeItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/LoopNodeItemProvider.java
@@ -404,7 +404,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.ACTION__LOCAL_POSTCONDITION
 			|| childFeature == UMLPackage.Literals.ACTION__LOCAL_PRECONDITION
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_INPUT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__NODE
 			|| childFeature == UMLPackage.Literals.LOOP_NODE__LOOP_VARIABLE_INPUT
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ModelItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ModelItemProvider.java
index a651d5a..a121b8b 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ModelItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ModelItemProvider.java
@@ -163,7 +163,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.NAMED_ELEMENT__NAME_EXPRESSION
 			|| childFeature == UMLPackage.Literals.PACKAGE__PACKAGED_ELEMENT
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.PACKAGE__NESTED_PACKAGE
 			|| childFeature == UMLPackage.Literals.PACKAGE__OWNED_STEREOTYPE
 			|| childFeature == UMLPackage.Literals.PACKAGE__OWNED_TYPE;
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/NamespaceItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/NamespaceItemProvider.java
index 1cff105..cc4b14d 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/NamespaceItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/NamespaceItemProvider.java
@@ -17,15 +17,19 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
-
+import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
-
+import org.eclipse.uml2.common.edit.command.SubsetAddCommand;
+import org.eclipse.uml2.common.edit.command.SubsetSupersetReplaceCommand;
+import org.eclipse.uml2.common.edit.command.SubsetSupersetSetCommand;
+import org.eclipse.uml2.common.edit.command.SupersetRemoveCommand;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.UMLFactory;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -85,8 +89,7 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Namespace_elementImport_feature", "_UI_Namespace_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT, true, false, true,
-			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
-		}));
+			null, null, null));
 	}
 
 	/**
@@ -104,8 +107,7 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Namespace_packageImport_feature", "_UI_Namespace_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT, true, false, true,
-			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
-		}));
+			null, null, null));
 	}
 
 	/**
@@ -122,8 +124,7 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Namespace_ownedRule_feature", "_UI_Namespace_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.NAMESPACE__OWNED_RULE, true, false, true, null,
-			null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
-		}));
+			null, null));
 	}
 
 	/**
@@ -195,9 +196,12 @@
 			Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(UMLPackage.Literals.NAMESPACE__OWNED_RULE);
-			childrenFeatures.add(UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT);
-			childrenFeatures.add(UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT);
+			childrenFeatures
+				.add(UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT);
+			childrenFeatures
+				.add(UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT);
+			childrenFeatures
+				.add(UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT);
 		}
 		return childrenFeatures;
 	}
@@ -256,6 +260,12 @@
 			case UMLPackage.NAMESPACE__ELEMENT_IMPORT :
 			case UMLPackage.NAMESPACE__PACKAGE_IMPORT :
 				fireNotifyChanged(new ViewerNotification(notification,
+					notification.getNotifier(), false, true));
+				return;
+			case UMLPackage.NAMESPACE__OWNED_ELEMENT_IMPORT :
+			case UMLPackage.NAMESPACE__OWNED_PACKAGE_IMPORT :
+			case UMLPackage.NAMESPACE__OWNED_CONSTRAINT :
+				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), true, false));
 				return;
 		}
@@ -274,33 +284,171 @@
 			Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT,
+			UMLFactory.eINSTANCE.createElementImport()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createInteractionConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT,
+			UMLFactory.eINSTANCE.createPackageImport()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createIntervalConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createConstraint()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createDurationConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createInteractionConstraint()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createTimeConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createIntervalConstraint()));
 
-		newChildDescriptors.add(
-			createChildParameter(UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT,
-				UMLFactory.eINSTANCE.createElementImport()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createDurationConstraint()));
 
-		newChildDescriptors.add(
-			createChildParameter(UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT,
-				UMLFactory.eINSTANCE.createPackageImport()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createTimeConstraint()));
+	}
+
+	@Override
+	protected Command createAddCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Collection<?> collection, int index) {
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT) {
+			return new SubsetAddCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				collection, index);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT) {
+			return new SubsetAddCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT},
+				collection, index);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT) {
+			return new SubsetAddCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT},
+				collection, index);
+		}
+		return super.createAddCommand(domain, owner, feature, collection,
+			index);
+	}
+
+	@Override
+	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Collection<?> collection) {
+		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
+			return new SupersetRemoveCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT},
+				collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SupersetRemoveCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT},
+				collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
+			return new SupersetRemoveCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT},
+				collection);
+		}
+		return super.createRemoveCommand(domain, owner, feature, collection);
+	}
+
+	@Override
+	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Object value,
+			Collection<?> collection) {
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT},
+				value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT},
+				value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT},
+				value, collection);
+		}
+		return super.createReplaceCommand(domain, owner, feature, value,
+			collection);
+	}
+
+	@Override
+	protected Command createSetCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Object value) {
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				null, value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT},
+				null, value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT},
+				null, value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature, null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT},
+				value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SubsetSupersetSetCommand(domain, owner, feature, null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT},
+				value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature, null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT},
+				value);
+		}
+		return super.createSetCommand(domain, owner, feature, value);
 	}
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OpaqueBehaviorItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OpaqueBehaviorItemProvider.java
index 2047495..7b4d7dd 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OpaqueBehaviorItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OpaqueBehaviorItemProvider.java
@@ -182,7 +182,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__PRECONDITION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OperationItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OperationItemProvider.java
index 9d53f1b..7472e0e 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OperationItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/OperationItemProvider.java
@@ -281,7 +281,8 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Operation_precondition_feature", "_UI_Operation_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.OPERATION__PRECONDITION, true, false, true,
-			null, null, null));
+			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
+		}));
 	}
 
 	/**
@@ -299,7 +300,8 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Operation_postcondition_feature", "_UI_Operation_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.OPERATION__POSTCONDITION, true, false, true,
-			null, null, null));
+			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
+		}));
 	}
 
 	/**
@@ -336,7 +338,8 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Operation_bodyCondition_feature", "_UI_Operation_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.OPERATION__BODY_CONDITION, true, false, true,
-			null, null, null));
+			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
+		}));
 	}
 
 	/**
@@ -427,6 +430,9 @@
 				UMLPackage.Literals.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING);
 			childrenFeatures.add(
 				UMLPackage.Literals.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE);
+			childrenFeatures.add(UMLPackage.Literals.OPERATION__BODY_CONDITION);
+			childrenFeatures.add(UMLPackage.Literals.OPERATION__POSTCONDITION);
+			childrenFeatures.add(UMLPackage.Literals.OPERATION__PRECONDITION);
 		}
 		return childrenFeatures;
 	}
@@ -550,19 +556,19 @@
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(Operation.class)) {
-			case UMLPackage.OPERATION__BODY_CONDITION :
 			case UMLPackage.OPERATION__IS_ORDERED :
 			case UMLPackage.OPERATION__IS_QUERY :
 			case UMLPackage.OPERATION__IS_UNIQUE :
 			case UMLPackage.OPERATION__LOWER :
-			case UMLPackage.OPERATION__POSTCONDITION :
-			case UMLPackage.OPERATION__PRECONDITION :
 			case UMLPackage.OPERATION__UPPER :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), false, true));
 				return;
 			case UMLPackage.OPERATION__TEMPLATE_BINDING :
 			case UMLPackage.OPERATION__OWNED_TEMPLATE_SIGNATURE :
+			case UMLPackage.OPERATION__BODY_CONDITION :
+			case UMLPackage.OPERATION__POSTCONDITION :
+			case UMLPackage.OPERATION__PRECONDITION :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), true, false));
 				return;
@@ -667,7 +673,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.OPERATION__BODY_CONDITION
 			|| childFeature == UMLPackage.Literals.OPERATION__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.OPERATION__PRECONDITION;
@@ -684,7 +690,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createAddCommand(EditingDomain domain, EObject owner,
@@ -709,7 +715,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
@@ -717,6 +723,7 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SupersetRemoveCommand(domain, owner, feature,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.OPERATION__BODY_CONDITION,
 					UMLPackage.Literals.OPERATION__POSTCONDITION,
 					UMLPackage.Literals.OPERATION__PRECONDITION},
@@ -729,7 +736,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createReplaceCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
@@ -751,6 +758,7 @@
 			return new SubsetSupersetReplaceCommand(domain, owner, feature,
 				null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.OPERATION__BODY_CONDITION,
 					UMLPackage.Literals.OPERATION__POSTCONDITION,
 					UMLPackage.Literals.OPERATION__PRECONDITION},
@@ -764,7 +772,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createSetCommand(EditingDomain domain, EObject owner,
@@ -796,6 +804,7 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SubsetSupersetSetCommand(domain, owner, feature, null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.OPERATION__BODY_CONDITION,
 					UMLPackage.Literals.OPERATION__POSTCONDITION,
 					UMLPackage.Literals.OPERATION__PRECONDITION},
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/PackageItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/PackageItemProvider.java
index 72abcc6..3db5d86 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/PackageItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/PackageItemProvider.java
@@ -870,7 +870,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.NAMED_ELEMENT__NAME_EXPRESSION
 			|| childFeature == UMLPackage.Literals.PACKAGE__PACKAGED_ELEMENT
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.PACKAGE__NESTED_PACKAGE
 			|| childFeature == UMLPackage.Literals.PACKAGE__OWNED_STEREOTYPE
 			|| childFeature == UMLPackage.Literals.PACKAGE__OWNED_TYPE;
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProfileItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProfileItemProvider.java
index 109737e..5948294 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProfileItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProfileItemProvider.java
@@ -91,7 +91,8 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Profile_metaclassReference_feature", "_UI_Profile_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.PROFILE__METACLASS_REFERENCE, true, false, true,
-			null, null, null));
+			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
+		}));
 	}
 
 	/**
@@ -109,7 +110,42 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Profile_metamodelReference_feature", "_UI_Profile_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.PROFILE__METAMODEL_REFERENCE, true, false, true,
-			null, null, null));
+			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
+		}));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(
+			Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures
+				.add(UMLPackage.Literals.PROFILE__METACLASS_REFERENCE);
+			childrenFeatures
+				.add(UMLPackage.Literals.PROFILE__METAMODEL_REFERENCE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
 	}
 
 	/**
@@ -163,7 +199,7 @@
 			case UMLPackage.PROFILE__METACLASS_REFERENCE :
 			case UMLPackage.PROFILE__METAMODEL_REFERENCE :
 				fireNotifyChanged(new ViewerNotification(notification,
-					notification.getNotifier(), false, true));
+					notification.getNotifier(), true, false));
 				return;
 		}
 		super.notifyChanged(notification);
@@ -204,11 +240,11 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.NAMED_ELEMENT__NAME_EXPRESSION
 			|| childFeature == UMLPackage.Literals.PACKAGE__PACKAGED_ELEMENT
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
-			|| childFeature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT
 			|| childFeature == UMLPackage.Literals.PROFILE__METACLASS_REFERENCE
-			|| childFeature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT
 			|| childFeature == UMLPackage.Literals.PROFILE__METAMODEL_REFERENCE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.PACKAGE__NESTED_PACKAGE
 			|| childFeature == UMLPackage.Literals.PACKAGE__OWNED_STEREOTYPE
 			|| childFeature == UMLPackage.Literals.PACKAGE__OWNED_TYPE;
@@ -225,7 +261,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createAddCommand(EditingDomain domain, EObject owner,
@@ -250,7 +286,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
@@ -258,12 +294,14 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
 			return new SupersetRemoveCommand(domain, owner, feature,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT,
 					UMLPackage.Literals.PROFILE__METACLASS_REFERENCE},
 				collection);
 		}
 		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
 			return new SupersetRemoveCommand(domain, owner, feature,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT,
 					UMLPackage.Literals.PROFILE__METAMODEL_REFERENCE},
 				collection);
 		}
@@ -274,7 +312,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createReplaceCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
@@ -296,6 +334,7 @@
 			return new SubsetSupersetReplaceCommand(domain, owner, feature,
 				null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT,
 					UMLPackage.Literals.PROFILE__METACLASS_REFERENCE},
 				value, collection);
 		}
@@ -303,6 +342,7 @@
 			return new SubsetSupersetReplaceCommand(domain, owner, feature,
 				null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT,
 					UMLPackage.Literals.PROFILE__METAMODEL_REFERENCE},
 				value, collection);
 		}
@@ -314,7 +354,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createSetCommand(EditingDomain domain, EObject owner,
@@ -334,12 +374,14 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
 			return new SubsetSupersetSetCommand(domain, owner, feature, null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT,
 					UMLPackage.Literals.PROFILE__METACLASS_REFERENCE},
 				value);
 		}
 		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
 			return new SubsetSupersetSetCommand(domain, owner, feature, null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT,
 					UMLPackage.Literals.PROFILE__METAMODEL_REFERENCE},
 				value);
 		}
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolStateMachineItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolStateMachineItemProvider.java
index f907356..ba2e0a5 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolStateMachineItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolStateMachineItemProvider.java
@@ -202,7 +202,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__PRECONDITION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolTransitionItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolTransitionItemProvider.java
index ae2a63d..1c28e92 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolTransitionItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/ProtocolTransitionItemProvider.java
@@ -116,6 +116,40 @@
 	}
 
 	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(
+			Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures
+				.add(UMLPackage.Literals.PROTOCOL_TRANSITION__POST_CONDITION);
+			childrenFeatures
+				.add(UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
 	 * This adds a property descriptor for the Pre Condition feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -131,7 +165,9 @@
 				"_UI_ProtocolTransition_preCondition_feature", //$NON-NLS-1$
 				"_UI_ProtocolTransition_type"), //$NON-NLS-1$
 			UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION, true, false,
-			true, null, null, null));
+			true, null, null,
+			new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
+		}));
 	}
 
 	/**
@@ -183,8 +219,9 @@
 
 		switch (notification.getFeatureID(ProtocolTransition.class)) {
 			case UMLPackage.PROTOCOL_TRANSITION__POST_CONDITION :
+			case UMLPackage.PROTOCOL_TRANSITION__PRE_CONDITION :
 				fireNotifyChanged(new ViewerNotification(notification,
-					notification.getNotifier(), false, true));
+					notification.getNotifier(), true, false));
 				return;
 		}
 		super.notifyChanged(notification);
@@ -221,6 +258,26 @@
 		newChildDescriptors.add(createChildParameter(
 			UMLPackage.Literals.PROTOCOL_TRANSITION__POST_CONDITION,
 			UMLFactory.eINSTANCE.createTimeConstraint()));
+
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION,
+			UMLFactory.eINSTANCE.createConstraint()));
+
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION,
+			UMLFactory.eINSTANCE.createInteractionConstraint()));
+
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION,
+			UMLFactory.eINSTANCE.createIntervalConstraint()));
+
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION,
+			UMLFactory.eINSTANCE.createDurationConstraint()));
+
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION,
+			UMLFactory.eINSTANCE.createTimeConstraint()));
 	}
 
 	/**
@@ -235,9 +292,10 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.TRANSITION__GUARD
-			|| childFeature == UMLPackage.Literals.PROTOCOL_TRANSITION__POST_CONDITION;
+			|| childFeature == UMLPackage.Literals.PROTOCOL_TRANSITION__POST_CONDITION
+			|| childFeature == UMLPackage.Literals.PROTOCOL_TRANSITION__PRE_CONDITION;
 
 		if (qualify) {
 			return getString("_UI_CreateChild_text2", //$NON-NLS-1$
@@ -251,14 +309,16 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
 			EStructuralFeature feature, Collection<?> collection) {
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SupersetRemoveCommand(domain, owner, feature,
-				new EStructuralFeature[]{UMLPackage.Literals.TRANSITION__GUARD,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+					UMLPackage.Literals.TRANSITION__GUARD,
 					UMLPackage.Literals.PROTOCOL_TRANSITION__POST_CONDITION},
 				collection);
 		}
@@ -269,7 +329,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createReplaceCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
@@ -278,7 +338,9 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SubsetSupersetReplaceCommand(domain, owner, feature,
 				null,
-				new EStructuralFeature[]{UMLPackage.Literals.TRANSITION__GUARD,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+					UMLPackage.Literals.TRANSITION__GUARD,
 					UMLPackage.Literals.PROTOCOL_TRANSITION__POST_CONDITION},
 				value, collection);
 		}
@@ -290,7 +352,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createSetCommand(EditingDomain domain, EObject owner,
@@ -316,7 +378,9 @@
 		}
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SubsetSupersetSetCommand(domain, owner, feature, null,
-				new EStructuralFeature[]{UMLPackage.Literals.TRANSITION__GUARD,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+					UMLPackage.Literals.TRANSITION__GUARD,
 					UMLPackage.Literals.PROTOCOL_TRANSITION__POST_CONDITION},
 				value);
 		}
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SequenceNodeItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SequenceNodeItemProvider.java
index acedcb4..7897079 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SequenceNodeItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SequenceNodeItemProvider.java
@@ -381,7 +381,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.ACTION__LOCAL_POSTCONDITION
 			|| childFeature == UMLPackage.Literals.ACTION__LOCAL_PRECONDITION
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_INPUT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__NODE
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_OUTPUT
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SlotItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SlotItemProvider.java
index b441a0b..7255169 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SlotItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/SlotItemProvider.java
@@ -182,8 +182,9 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		return appendLabel(appendType(
-			appendKeywords(new StringBuffer(), object), "_UI_Slot_type"), //$NON-NLS-1$
+		return appendLabel(
+			appendType(appendKeywords(new StringBuffer(), object),
+				"_UI_Slot_type"), //$NON-NLS-1$
 			((Slot) object).getDefiningFeature()).toString();
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateItemProvider.java
index e50904d..6180e27 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateItemProvider.java
@@ -705,7 +705,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.STATE__STATE_INVARIANT
 			|| childFeature == UMLPackage.Literals.STATE__DO_ACTIVITY
 			|| childFeature == UMLPackage.Literals.STATE__ENTRY
@@ -723,7 +723,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
@@ -731,6 +731,7 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SupersetRemoveCommand(domain, owner, feature,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.STATE__STATE_INVARIANT},
 				collection);
 		}
@@ -741,7 +742,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createReplaceCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
@@ -751,6 +752,7 @@
 			return new SubsetSupersetReplaceCommand(domain, owner, feature,
 				null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.STATE__STATE_INVARIANT},
 				value, collection);
 		}
@@ -762,7 +764,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createSetCommand(EditingDomain domain, EObject owner,
@@ -776,6 +778,7 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SubsetSupersetSetCommand(domain, owner, feature, null,
 				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
 					UMLPackage.Literals.STATE__STATE_INVARIANT},
 				value);
 		}
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateMachineItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateMachineItemProvider.java
index 8959cfe..bd878b6 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateMachineItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StateMachineItemProvider.java
@@ -274,7 +274,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION
 			|| childFeature == UMLPackage.Literals.BEHAVIOR__PRECONDITION
 			|| childFeature == UMLPackage.Literals.CLASSIFIER__COLLABORATION_USE
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StructuredActivityNodeItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StructuredActivityNodeItemProvider.java
index a28d92a..e51c3e7 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StructuredActivityNodeItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/StructuredActivityNodeItemProvider.java
@@ -17,16 +17,20 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
-
+import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
-
+import org.eclipse.uml2.common.edit.command.SubsetAddCommand;
+import org.eclipse.uml2.common.edit.command.SubsetSupersetReplaceCommand;
+import org.eclipse.uml2.common.edit.command.SubsetSupersetSetCommand;
+import org.eclipse.uml2.common.edit.command.SupersetRemoveCommand;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.UMLFactory;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -97,8 +101,7 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Namespace_elementImport_feature", "_UI_Namespace_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT, true, false, true,
-			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
-		}));
+			null, null, null));
 	}
 
 	/**
@@ -116,8 +119,7 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Namespace_packageImport_feature", "_UI_Namespace_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT, true, false, true,
-			null, null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
-		}));
+			null, null, null));
 	}
 
 	/**
@@ -134,8 +136,7 @@
 			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
 				"_UI_Namespace_ownedRule_feature", "_UI_Namespace_type"), //$NON-NLS-1$ //$NON-NLS-2$
 			UMLPackage.Literals.NAMESPACE__OWNED_RULE, true, false, true, null,
-			null, new String[]{"org.eclipse.ui.views.properties.expert" //$NON-NLS-1$
-		}));
+			null, null));
 	}
 
 	/**
@@ -435,9 +436,12 @@
 			Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(UMLPackage.Literals.NAMESPACE__OWNED_RULE);
-			childrenFeatures.add(UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT);
-			childrenFeatures.add(UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT);
+			childrenFeatures
+				.add(UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT);
+			childrenFeatures
+				.add(UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT);
+			childrenFeatures
+				.add(UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT);
 			childrenFeatures
 				.add(UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__EDGE);
 			childrenFeatures.add(
@@ -513,13 +517,16 @@
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(StructuredActivityNode.class)) {
+			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_RULE :
+			case UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT :
+			case UMLPackage.STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT :
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), false, true));
 				return;
-			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_RULE :
-			case UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT :
-			case UMLPackage.STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT :
+			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT_IMPORT :
+			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_PACKAGE_IMPORT :
+			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_CONSTRAINT :
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EDGE :
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_INPUT :
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_OUTPUT :
@@ -544,33 +551,33 @@
 			Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT,
+			UMLFactory.eINSTANCE.createElementImport()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createInteractionConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT,
+			UMLFactory.eINSTANCE.createPackageImport()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createIntervalConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createConstraint()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createDurationConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createInteractionConstraint()));
 
-		newChildDescriptors
-			.add(createChildParameter(UMLPackage.Literals.NAMESPACE__OWNED_RULE,
-				UMLFactory.eINSTANCE.createTimeConstraint()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createIntervalConstraint()));
 
-		newChildDescriptors.add(
-			createChildParameter(UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT,
-				UMLFactory.eINSTANCE.createElementImport()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createDurationConstraint()));
 
-		newChildDescriptors.add(
-			createChildParameter(UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT,
-				UMLFactory.eINSTANCE.createPackageImport()));
+		newChildDescriptors.add(createChildParameter(
+			UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+			UMLFactory.eINSTANCE.createTimeConstraint()));
 
 		newChildDescriptors.add(createChildParameter(
 			UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__EDGE,
@@ -843,7 +850,7 @@
 
 		boolean qualify = childFeature == UMLPackage.Literals.ACTION__LOCAL_POSTCONDITION
 			|| childFeature == UMLPackage.Literals.ACTION__LOCAL_PRECONDITION
-			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+			|| childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_INPUT
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__NODE
 			|| childFeature == UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE__STRUCTURED_NODE_OUTPUT;
@@ -856,4 +863,142 @@
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
+	@Override
+	protected Command createAddCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Collection<?> collection, int index) {
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT) {
+			return new SubsetAddCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				collection, index);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT) {
+			return new SubsetAddCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT},
+				collection, index);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT) {
+			return new SubsetAddCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT},
+				collection, index);
+		}
+		return super.createAddCommand(domain, owner, feature, collection,
+			index);
+	}
+
+	@Override
+	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Collection<?> collection) {
+		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
+			return new SupersetRemoveCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT},
+				collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SupersetRemoveCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT},
+				collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
+			return new SupersetRemoveCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT},
+				collection);
+		}
+		return super.createRemoveCommand(domain, owner, feature, collection);
+	}
+
+	@Override
+	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Object value,
+			Collection<?> collection) {
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT},
+				value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT},
+				value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT},
+				value, collection);
+		}
+		return super.createReplaceCommand(domain, owner, feature, value,
+			collection);
+	}
+
+	@Override
+	protected Command createSetCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Object value) {
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				null, value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT},
+				null, value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT},
+				null, value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__ELEMENT_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature, null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_ELEMENT_IMPORT},
+				value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SubsetSupersetSetCommand(domain, owner, feature, null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT},
+				value);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__PACKAGE_IMPORT) {
+			return new SubsetSupersetSetCommand(domain, owner, feature, null,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_PACKAGE_IMPORT},
+				value);
+		}
+		return super.createSetCommand(domain, owner, feature, value);
+	}
+
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/TransitionItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/TransitionItemProvider.java
index a694d89..52e660c 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/TransitionItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/TransitionItemProvider.java
@@ -301,6 +301,7 @@
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(UMLPackage.Literals.TRANSITION__EFFECT);
+			childrenFeatures.add(UMLPackage.Literals.TRANSITION__GUARD);
 			childrenFeatures.add(UMLPackage.Literals.TRANSITION__TRIGGER);
 		}
 		return childrenFeatures;
@@ -369,12 +370,12 @@
 
 		switch (notification.getFeatureID(Transition.class)) {
 			case UMLPackage.TRANSITION__IS_LEAF :
-			case UMLPackage.TRANSITION__GUARD :
 			case UMLPackage.TRANSITION__KIND :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), false, true));
 				return;
 			case UMLPackage.TRANSITION__EFFECT :
+			case UMLPackage.TRANSITION__GUARD :
 			case UMLPackage.TRANSITION__TRIGGER :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), true, false));
@@ -456,7 +457,7 @@
 		Object childFeature = feature;
 		Object childObject = child;
 
-		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_RULE
+		boolean qualify = childFeature == UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT
 			|| childFeature == UMLPackage.Literals.TRANSITION__GUARD;
 
 		if (qualify) {
@@ -471,14 +472,16 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
 			EStructuralFeature feature, Collection<?> collection) {
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SupersetRemoveCommand(domain, owner, feature,
-				new EStructuralFeature[]{UMLPackage.Literals.TRANSITION__GUARD},
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+					UMLPackage.Literals.TRANSITION__GUARD},
 				collection);
 		}
 		return super.createRemoveCommand(domain, owner, feature, collection);
@@ -488,7 +491,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createReplaceCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
@@ -497,7 +500,9 @@
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SubsetSupersetReplaceCommand(domain, owner, feature,
 				null,
-				new EStructuralFeature[]{UMLPackage.Literals.TRANSITION__GUARD},
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+					UMLPackage.Literals.TRANSITION__GUARD},
 				value, collection);
 		}
 		return super.createReplaceCommand(domain, owner, feature, value,
@@ -508,7 +513,7 @@
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	protected Command createSetCommand(EditingDomain domain, EObject owner,
@@ -521,7 +526,9 @@
 		}
 		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
 			return new SubsetSupersetSetCommand(domain, owner, feature, null,
-				new EStructuralFeature[]{UMLPackage.Literals.TRANSITION__GUARD},
+				new EStructuralFeature[]{
+					UMLPackage.Literals.NAMESPACE__OWNED_CONSTRAINT,
+					UMLPackage.Literals.TRANSITION__GUARD},
 				value);
 		}
 		return super.createSetCommand(domain, owner, feature, value);