Bug 570486: [Architecture] Update CDO implementation of the Architecture Model

- update source Ecore and generator models to match core models
- regenerate CDO implementations from latest model and codegen templates
- add missing implementations of new interface methods
- fix missing implementations of methods that had been generated
  previously as TODOs throwing UnsupportedOperationException
- delete obsolete UML models as in the core

Signed-off-by: Christian W. Damus <give.a.damus@gmail.com>
Change-Id: Ia45d708652dd76d4c60a25c9f8d4fa457847977f
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore
old mode 100644
new mode 100755
index 41f3382..647393f
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore
@@ -201,20 +201,108 @@
       <details key="documentation" value="The superclass of architectural description languages or architecture frameworks. It defines a collection of viewpoints on models."/>
     </eAnnotations>
     <eOperations name="ceationCommandClassExists" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
-      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDiagnosticChain"/>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
       <eParameters name="context" unique="false">
-        <eGenericType eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
-          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
-          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
         </eGenericType>
       </eParameters>
     </eOperations>
     <eOperations name="conversionCommandClassExists" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
-      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDiagnosticChain"/>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
       <eParameters name="context" unique="false">
-        <eGenericType eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
-          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
-          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="isConsistentWith" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Query whether the context is consistent with some other {@code context}. At the least, this means that it is of the same metaclass: an {@link ArchitectureFramework} is not consistent with an {@link ArchitectureDescriptionLanguage}."/>
+      </eAnnotations>
+      <eParameters name="context" lowerBound="1" eType="#//ArchitectureContext"/>
+    </eOperations>
+    <eOperations name="contextExtensionsAreConsistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A context must be {@linkplain #isConsistentWith(ArchitectureContext consistent with} all contexts that it extends."/>
+      </eAnnotations>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="contextGeneralizationIsConsistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A context must be {@linkplain #isConsistentWith(ArchitectureContext consistent with} all the context that it specializes (if any)."/>
+      </eAnnotations>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="creationCommandClassRequired" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A context requires a {@linkplain #getCreationCommandClass() creation command class} if it {@linkplain #isExtension() is not an extension} of some other context."/>
+      </eAnnotations>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="allExtendedContexts" upperBound="-1" eType="#//ArchitectureContext">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Query the graph of all contexts that this context extends, in breadth-first order from those directly extended."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="allGeneralContexts" upperBound="-1" eType="#//ArchitectureContext">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Query the chain of all contexts that this context specializes, from most specific to most general."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="extensionCycle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A context may not extend itself, neither directly not indirectly."/>
+      </eAnnotations>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="generalizationCycle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A context may not specialize itself, neither directly not indirectly."/>
+      </eAnnotations>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="generalNotExtended" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A context must not extend any {@linkplain #allGeneralContexts() context that it specializes}, neither directly nor indirectly."/>
+      </eAnnotations>
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
         </eGenericType>
       </eParameters>
     </eOperations>
@@ -255,13 +343,15 @@
         <details key="propertyCategory" value="Context"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="creationCommandClass" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="creationCommandClass" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The fully qualified name of a command that creates models applying this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand inteface"/>
         <details key="propertyDescription" value="The fully qualified name of a command that creates models applying this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand inteface"/>
         <details key="propertyCategory" value="Context"/>
       </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/papyrus/infra/core/architecture">
+        <details key="classConstraint" value="bundleclass://org.eclipse.papyrus.infra.architecture/org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand"/>
+      </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="conversionCommandClass"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
@@ -270,6 +360,27 @@
         <details key="propertyDescription" value="The fully qualified name of a command that refactors models that switched to this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand inteface"/>
         <details key="propertyCategory" value="Context"/>
       </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/papyrus/infra/core/architecture">
+        <details key="classConstraint" value="bundleclass://org.eclipse.papyrus.infra.architecture/org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="generalContext" eType="#//ArchitectureContext">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="An {@link ArchitectureContext} of the same kind that this context specializes."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="extendedContexts" upperBound="-1"
+        eType="#//ArchitectureContext">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="{@link ArchitectureContext}s to which this context contributes additional definitions."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="extension" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" changeable="false"
+        volatile="true" transient="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Whether this context is an {@linkplain #getExtendedContexts() extension of other contexts}. Extension contexts are not presented in their own right in model creation wizards and other UI components."/>
+      </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ArchitectureFramework" eSuperTypes="#//ArchitectureContext">
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.genmodel b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.genmodel
index c426b31..e0adb7a 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.genmodel
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.genmodel
@@ -88,6 +88,9 @@
           ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureContext/creationCommandClass"/>
       <genFeatures createChild="false" propertyCategory="Context" propertyDescription="The fully qualified name of a command that refactors models that switched to this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand inteface"
           ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureContext/conversionCommandClass"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureContext/generalContext"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureContext/extendedContexts"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureContext/extension"/>
       <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/ceationCommandClassExists">
         <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/ceationCommandClassExists/diagnostics"/>
         <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/ceationCommandClassExists/context"/>
@@ -96,6 +99,35 @@
         <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/conversionCommandClassExists/diagnostics"/>
         <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/conversionCommandClassExists/context"/>
       </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/isConsistentWith">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/isConsistentWith/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/contextExtensionsAreConsistent">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/contextExtensionsAreConsistent/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/contextExtensionsAreConsistent/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/contextGeneralizationIsConsistent">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/contextGeneralizationIsConsistent/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/contextGeneralizationIsConsistent/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/creationCommandClassRequired">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/creationCommandClassRequired/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/creationCommandClassRequired/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/allExtendedContexts"/>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/allGeneralContexts"/>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/extensionCycle">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/extensionCycle/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/extensionCycle/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/generalizationCycle">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/generalizationCycle/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/generalizationCycle/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/generalNotExtended">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/generalNotExtended/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/generalNotExtended/context"/>
+      </genOperations>
     </genClasses>
     <genClasses ecoreClass="Architecture.ecore#//ArchitectureFramework"/>
     <genClasses ecoreClass="Architecture.ecore#//ArchitectureDescription">
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.uml b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.uml
deleted file mode 100644
index 4cadc77..0000000
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.uml
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
-  <uml:Model xmi:id="_46bO0F_sEeecE-N4uvmt0g" name="architecture" URI="http://www.eclipse.org/papyrus/infra/core/architecture">
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bO0V_sEeecE-N4uvmt0g" name="ADElement" isAbstract="true">
-      <ownedAttribute xmi:id="_46bO0l_sEeecE-N4uvmt0g" name="id" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO01_sEeecE-N4uvmt0g" name="name" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO1F_sEeecE-N4uvmt0g" name="description" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO1V_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO1l_sEeecE-N4uvmt0g" name="qualifiedName" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO11_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO2F_sEeecE-N4uvmt0g" name="icon" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO2V_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bO2l_sEeecE-N4uvmt0g" name="ArchitectureDomain">
-      <generalization xmi:id="_46bO21_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bO3F_sEeecE-N4uvmt0g" name="stakeholders" type="_46bO5V_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bO8V_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO3V_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO3l_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO31_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bO7l_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO4F_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO4V_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO4l_sEeecE-N4uvmt0g" name="contexts" type="_46bO8l_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bPM1_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO41_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO5F_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bO5V_sEeecE-N4uvmt0g" name="Stakeholder">
-      <generalization xmi:id="_46bO5l_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bO51_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" association="_46bO71_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO6F_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO6V_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO6l_sEeecE-N4uvmt0g" name="domain" type="_46bO2l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bO8V_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bO61_sEeecE-N4uvmt0g" name="Concern">
-      <generalization xmi:id="_46bO7F_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bO7V_sEeecE-N4uvmt0g" name="domain" type="_46bO2l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bO7l_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bO7l_sEeecE-N4uvmt0g" memberEnd="_46bO31_sEeecE-N4uvmt0g _46bO7V_sEeecE-N4uvmt0g"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bO71_sEeecE-N4uvmt0g" memberEnd="_46bO51_sEeecE-N4uvmt0g _46bO8F_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bO8F_sEeecE-N4uvmt0g" type="_46bO5V_sEeecE-N4uvmt0g" association="_46bO71_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bO8V_sEeecE-N4uvmt0g" memberEnd="_46bO3F_sEeecE-N4uvmt0g _46bO6l_sEeecE-N4uvmt0g"/>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bO8l_sEeecE-N4uvmt0g" name="ArchitectureContext" isAbstract="true">
-      <generalization xmi:id="_46bO81_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bO9F_sEeecE-N4uvmt0g" name="viewpoints" type="_46bPC1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bPLl_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO9V_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO9l_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO91_sEeecE-N4uvmt0g" name="defaultViewpoints" type="_46bPC1_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPL1_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO-F_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO-V_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO-l_sEeecE-N4uvmt0g" name="elementTypes" isOrdered="true" association="_46bPMV_sEeecE-N4uvmt0g">
-        <type xmi:type="uml:Class" href="ElementTypesConfigurations.uml#_44q7UV_sEeecE-N4uvmt0g"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO-1_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO_F_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bO_V_sEeecE-N4uvmt0g" name="domain" type="_46bO2l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPM1_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bO_l_sEeecE-N4uvmt0g" name="extensionPrefix" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO_1_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bPAF_sEeecE-N4uvmt0g" name="creationCommandClass" visibility="public" type="_46bPBF_sEeecE-N4uvmt0g" isOrdered="true"/>
-      <ownedAttribute xmi:id="_46bPAV_sEeecE-N4uvmt0g" name="conversionCommandClass" visibility="public" type="_46bPCF_sEeecE-N4uvmt0g" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPAl_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <nestedClassifier xmi:type="uml:Class" xmi:id="_46bPA1_sEeecE-N4uvmt0g" name="Wildcard"/>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_46bPBF_sEeecE-N4uvmt0g" name="EJavaClass_Wildcard">
-        <templateBinding xmi:id="_46bPBV_sEeecE-N4uvmt0g">
-          <parameterSubstitution xmi:id="_46bPBl_sEeecE-N4uvmt0g" actual="_46bPA1_sEeecE-N4uvmt0g">
-            <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0-_ownedParameter.0"/>
-          </parameterSubstitution>
-          <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0"/>
-        </templateBinding>
-      </nestedClassifier>
-      <nestedClassifier xmi:type="uml:Class" xmi:id="_46bPB1_sEeecE-N4uvmt0g" name="Wildcard"/>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_46bPCF_sEeecE-N4uvmt0g" name="EJavaClass_Wildcard">
-        <templateBinding xmi:id="_46bPCV_sEeecE-N4uvmt0g">
-          <parameterSubstitution xmi:id="_46bPCl_sEeecE-N4uvmt0g" actual="_46bPB1_sEeecE-N4uvmt0g">
-            <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0-_ownedParameter.0"/>
-          </parameterSubstitution>
-          <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0"/>
-        </templateBinding>
-      </nestedClassifier>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bPC1_sEeecE-N4uvmt0g" name="ArchitectureViewpoint">
-      <generalization xmi:id="_46bPDF_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bPDV_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPFF_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPDl_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPD1_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bPEF_sEeecE-N4uvmt0g" name="representationKinds" type="_46bPFl_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPLF_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPEV_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPEl_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bPE1_sEeecE-N4uvmt0g" name="context" type="_46bO8l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPLl_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPFF_sEeecE-N4uvmt0g" memberEnd="_46bPDV_sEeecE-N4uvmt0g _46bPFV_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bPFV_sEeecE-N4uvmt0g" type="_46bPC1_sEeecE-N4uvmt0g" association="_46bPFF_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bPFl_sEeecE-N4uvmt0g" name="RepresentationKind" isAbstract="true">
-      <generalization xmi:id="_46bPF1_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bPGF_sEeecE-N4uvmt0g" name="language" type="_46bPHF_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPJV_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bPGV_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPKl_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPGl_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPG1_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_3prHYMrzEem0O816XhrVeA" name="grayedIcon" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3prHYcrzEem0O816XhrVeA"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bPHF_sEeecE-N4uvmt0g" name="ArchitectureDescriptionLanguage">
-      <generalization xmi:id="_46bPHV_sEeecE-N4uvmt0g" general="_46bO8l_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bPHl_sEeecE-N4uvmt0g" name="representationKinds" type="_46bPFl_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bPJV_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPH1_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPIF_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_46bPIV_sEeecE-N4uvmt0g" name="metamodel" isOrdered="true" association="_46bPJl_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_46bPIl_sEeecE-N4uvmt0g" name="profiles" isOrdered="true" association="_46bPKF_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPI1_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPJF_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPJV_sEeecE-N4uvmt0g" memberEnd="_46bPHl_sEeecE-N4uvmt0g _46bPGF_sEeecE-N4uvmt0g"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPJl_sEeecE-N4uvmt0g" memberEnd="_46bPIV_sEeecE-N4uvmt0g _46bPJ1_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bPJ1_sEeecE-N4uvmt0g" type="_46bPHF_sEeecE-N4uvmt0g" association="_46bPJl_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPKF_sEeecE-N4uvmt0g" memberEnd="_46bPIl_sEeecE-N4uvmt0g _46bPKV_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bPKV_sEeecE-N4uvmt0g" type="_46bPHF_sEeecE-N4uvmt0g" association="_46bPKF_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPKl_sEeecE-N4uvmt0g" memberEnd="_46bPGV_sEeecE-N4uvmt0g _46bPK1_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bPK1_sEeecE-N4uvmt0g" type="_46bPFl_sEeecE-N4uvmt0g" association="_46bPKl_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPLF_sEeecE-N4uvmt0g" memberEnd="_46bPEF_sEeecE-N4uvmt0g _46bPLV_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bPLV_sEeecE-N4uvmt0g" type="_46bPC1_sEeecE-N4uvmt0g" association="_46bPLF_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPLl_sEeecE-N4uvmt0g" memberEnd="_46bO9F_sEeecE-N4uvmt0g _46bPE1_sEeecE-N4uvmt0g"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPL1_sEeecE-N4uvmt0g" memberEnd="_46bO91_sEeecE-N4uvmt0g _46bPMF_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bPMF_sEeecE-N4uvmt0g" type="_46bO8l_sEeecE-N4uvmt0g" association="_46bPL1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPMV_sEeecE-N4uvmt0g" memberEnd="_46bO-l_sEeecE-N4uvmt0g _46bPMl_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_46bPMl_sEeecE-N4uvmt0g" type="_46bO8l_sEeecE-N4uvmt0g" association="_46bPMV_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_46bPM1_sEeecE-N4uvmt0g" memberEnd="_46bO4l_sEeecE-N4uvmt0g _46bO_V_sEeecE-N4uvmt0g"/>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bPNF_sEeecE-N4uvmt0g" name="ArchitectureFramework">
-      <generalization xmi:id="_46bPNV_sEeecE-N4uvmt0g" general="_46bO8l_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bPNl_sEeecE-N4uvmt0g" name="ArchitectureDescription">
-      <ownedAttribute xmi:id="_46bPN1_sEeecE-N4uvmt0g" name="contextId" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPOF_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_46bPOV_sEeecE-N4uvmt0g" name="ArchitectureDescriptionPreferences">
-      <ownedAttribute xmi:id="_46bPOl_sEeecE-N4uvmt0g" name="viewpointIds" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPO1_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPPF_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <profileApplication xmi:id="_46bPPV_sEeecE-N4uvmt0g">
-      <eAnnotations xmi:id="_46bPPl_sEeecE-N4uvmt0g" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
-      </eAnnotations>
-      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
-    </profileApplication>
-  </uml:Model>
-  <Ecore:EPackage xmi:id="_46bPP1_sEeecE-N4uvmt0g" base_Package="_46bO0F_sEeecE-N4uvmt0g" nsPrefix="architecture" basePackage="org.eclipse.papyrus.infra.core"/>
-  <Ecore:EClass xmi:id="_46bPQF_sEeecE-N4uvmt0g" base_Class="_46bO0V_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPQV_sEeecE-N4uvmt0g" base_Class="_46bO2l_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPQl_sEeecE-N4uvmt0g" base_Property="_46bO3F_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPQ1_sEeecE-N4uvmt0g" base_Property="_46bO31_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPRF_sEeecE-N4uvmt0g" base_Property="_46bO4l_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPRV_sEeecE-N4uvmt0g" base_Class="_46bO5V_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPRl_sEeecE-N4uvmt0g" base_Property="_46bO51_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPR1_sEeecE-N4uvmt0g" base_Property="_46bO6l_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPSF_sEeecE-N4uvmt0g" base_Class="_46bO61_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPSV_sEeecE-N4uvmt0g" base_Property="_46bO7V_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPSl_sEeecE-N4uvmt0g" base_Class="_46bO8l_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPS1_sEeecE-N4uvmt0g" base_Property="_46bO9F_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPTF_sEeecE-N4uvmt0g" base_Property="_46bO91_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPTV_sEeecE-N4uvmt0g" base_Property="_46bO-l_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPTl_sEeecE-N4uvmt0g" base_Property="_46bO_V_sEeecE-N4uvmt0g"/>
-  <Ecore:EGenericType xmi:id="_46bPT1_sEeecE-N4uvmt0g" base_Class="_46bPA1_sEeecE-N4uvmt0g"/>
-  <Ecore:EGenericType xmi:id="_46bPUF_sEeecE-N4uvmt0g" base_DataType="_46bPBF_sEeecE-N4uvmt0g"/>
-  <Ecore:EGenericType xmi:id="_46bPUV_sEeecE-N4uvmt0g" base_Class="_46bPB1_sEeecE-N4uvmt0g"/>
-  <Ecore:EGenericType xmi:id="_46bPUl_sEeecE-N4uvmt0g" base_DataType="_46bPCF_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPU1_sEeecE-N4uvmt0g" base_Class="_46bPC1_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPVF_sEeecE-N4uvmt0g" base_Property="_46bPDV_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPVV_sEeecE-N4uvmt0g" base_Property="_46bPEF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPVl_sEeecE-N4uvmt0g" base_Property="_46bPE1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPV1_sEeecE-N4uvmt0g" base_Class="_46bPFl_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPWF_sEeecE-N4uvmt0g" base_Property="_46bPGF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPWV_sEeecE-N4uvmt0g" base_Property="_46bPGV_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPWl_sEeecE-N4uvmt0g" base_Class="_46bPHF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPW1_sEeecE-N4uvmt0g" base_Property="_46bPHl_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPXF_sEeecE-N4uvmt0g" base_Property="_46bPIV_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_46bPXV_sEeecE-N4uvmt0g" base_Property="_46bPIl_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPXl_sEeecE-N4uvmt0g" base_Class="_46bPNF_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPX1_sEeecE-N4uvmt0g" base_Class="_46bPNl_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_46bPYF_sEeecE-N4uvmt0g" base_Class="_46bPOV_sEeecE-N4uvmt0g"/>
-</xmi:XMI>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/ElementTypesConfigurations.uml b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/ElementTypesConfigurations.uml
deleted file mode 100644
index 18f519c..0000000
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/ElementTypesConfigurations.uml
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
-  <uml:Model xmi:id="_44q7UF_sEeecE-N4uvmt0g" name="types" URI="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2">
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7UV_sEeecE-N4uvmt0g" name="ElementTypeSetConfiguration">
-      <generalization xmi:id="_44q7Ul_sEeecE-N4uvmt0g" general="_44q7XF_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7U1_sEeecE-N4uvmt0g" name="elementTypeConfigurations" type="_44q7Y1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7dl_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7VF_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7VV_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7Vl_sEeecE-N4uvmt0g" name="adviceBindingsConfigurations" type="_44q7eF_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7ol_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7V1_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7WF_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7WV_sEeecE-N4uvmt0g" name="metamodelNsURI" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-      <interfaceRealization xmi:id="_44q7Wl_sEeecE-N4uvmt0g" client="_44q7UV_sEeecE-N4uvmt0g" supplier="_44q7X1_sEeecE-N4uvmt0g" contract="_44q7X1_sEeecE-N4uvmt0g"/>
-      <interfaceRealization xmi:id="_44q7W1_sEeecE-N4uvmt0g" client="_44q7UV_sEeecE-N4uvmt0g" supplier="_44q7YV_sEeecE-N4uvmt0g" contract="_44q7YV_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7XF_sEeecE-N4uvmt0g" name="ConfigurationElement" isAbstract="true">
-      <ownedAttribute xmi:id="_44q7XV_sEeecE-N4uvmt0g" name="description" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7Xl_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Interface" xmi:id="_44q7X1_sEeecE-N4uvmt0g" name="IdentifiedConfiguration">
-      <ownedAttribute xmi:id="_44q7YF_sEeecE-N4uvmt0g" name="identifier" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Interface" xmi:id="_44q7YV_sEeecE-N4uvmt0g" name="NamedConfiguration">
-      <ownedAttribute xmi:id="_44q7Yl_sEeecE-N4uvmt0g" name="name" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7Y1_sEeecE-N4uvmt0g" name="ElementTypeConfiguration" isAbstract="true">
-      <generalization xmi:id="_44q7ZF_sEeecE-N4uvmt0g" general="_44q7XF_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7ZV_sEeecE-N4uvmt0g" name="hint" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7Zl_sEeecE-N4uvmt0g"/>
-        <defaultValue xmi:type="uml:LiteralString" xmi:id="_44q7Z1_sEeecE-N4uvmt0g" value="">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        </defaultValue>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7aF_sEeecE-N4uvmt0g" name="kind" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7aV_sEeecE-N4uvmt0g"/>
-        <defaultValue xmi:type="uml:LiteralString" xmi:id="_44q7al_sEeecE-N4uvmt0g" value="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        </defaultValue>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7a1_sEeecE-N4uvmt0g" name="iconEntry" type="_44q7b1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7dF_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7bF_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <interfaceRealization xmi:id="_44q7bV_sEeecE-N4uvmt0g" client="_44q7Y1_sEeecE-N4uvmt0g" supplier="_44q7X1_sEeecE-N4uvmt0g" contract="_44q7X1_sEeecE-N4uvmt0g"/>
-      <interfaceRealization xmi:id="_44q7bl_sEeecE-N4uvmt0g" client="_44q7Y1_sEeecE-N4uvmt0g" supplier="_44q7YV_sEeecE-N4uvmt0g" contract="_44q7YV_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7b1_sEeecE-N4uvmt0g" name="IconEntry">
-      <ownedAttribute xmi:id="_44q7cF_sEeecE-N4uvmt0g" name="iconPath" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7cV_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7cl_sEeecE-N4uvmt0g" name="bundleId" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7c1_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7dF_sEeecE-N4uvmt0g" memberEnd="_44q7a1_sEeecE-N4uvmt0g _44q7dV_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7dV_sEeecE-N4uvmt0g" type="_44q7Y1_sEeecE-N4uvmt0g" association="_44q7dF_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7dl_sEeecE-N4uvmt0g" memberEnd="_44q7U1_sEeecE-N4uvmt0g _44q7d1_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7d1_sEeecE-N4uvmt0g" type="_44q7UV_sEeecE-N4uvmt0g" association="_44q7dl_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7eF_sEeecE-N4uvmt0g" name="AbstractAdviceBindingConfiguration" isAbstract="true">
-      <generalization xmi:id="_44q7eV_sEeecE-N4uvmt0g" general="_44q7gl_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7el_sEeecE-N4uvmt0g" name="target" type="_44q7Y1_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7jl_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7e1_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7fF_sEeecE-N4uvmt0g" name="containerConfiguration" type="_44q7kF_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7m1_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7fV_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7fl_sEeecE-N4uvmt0g" name="matcherConfiguration" type="_44q7ll_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7nV_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7f1_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7gF_sEeecE-N4uvmt0g" name="inheritance" visibility="public" type="_44q7n1_sEeecE-N4uvmt0g" isOrdered="true"/>
-      <interfaceRealization xmi:id="_44q7gV_sEeecE-N4uvmt0g" client="_44q7eF_sEeecE-N4uvmt0g" supplier="_44q7X1_sEeecE-N4uvmt0g" contract="_44q7X1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7gl_sEeecE-N4uvmt0g" name="AdviceConfiguration" isAbstract="true">
-      <generalization xmi:id="_44q7g1_sEeecE-N4uvmt0g" general="_44q7XF_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7hF_sEeecE-N4uvmt0g" name="before" type="_44q7gl_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7il_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7hV_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7hl_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7h1_sEeecE-N4uvmt0g" name="after" type="_44q7gl_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7jF_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7iF_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7iV_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7il_sEeecE-N4uvmt0g" memberEnd="_44q7hF_sEeecE-N4uvmt0g _44q7i1_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7i1_sEeecE-N4uvmt0g" type="_44q7gl_sEeecE-N4uvmt0g" association="_44q7il_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7jF_sEeecE-N4uvmt0g" memberEnd="_44q7h1_sEeecE-N4uvmt0g _44q7jV_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7jV_sEeecE-N4uvmt0g" type="_44q7gl_sEeecE-N4uvmt0g" association="_44q7jF_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7jl_sEeecE-N4uvmt0g" memberEnd="_44q7el_sEeecE-N4uvmt0g _44q7j1_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7j1_sEeecE-N4uvmt0g" type="_44q7eF_sEeecE-N4uvmt0g" association="_44q7jl_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7kF_sEeecE-N4uvmt0g" name="ContainerConfiguration">
-      <ownedAttribute xmi:id="_44q7kV_sEeecE-N4uvmt0g" name="containerMatcherConfiguration" type="_44q7ll_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7l1_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7kl_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7k1_sEeecE-N4uvmt0g" name="eContainmentFeatures" isOrdered="true" association="_44q7mV_sEeecE-N4uvmt0g">
-        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EReference"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7lF_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7lV_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7ll_sEeecE-N4uvmt0g" name="AbstractMatcherConfiguration" isAbstract="true"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7l1_sEeecE-N4uvmt0g" memberEnd="_44q7kV_sEeecE-N4uvmt0g _44q7mF_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7mF_sEeecE-N4uvmt0g" type="_44q7kF_sEeecE-N4uvmt0g" association="_44q7l1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7mV_sEeecE-N4uvmt0g" memberEnd="_44q7k1_sEeecE-N4uvmt0g _44q7ml_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7ml_sEeecE-N4uvmt0g" type="_44q7kF_sEeecE-N4uvmt0g" association="_44q7mV_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7m1_sEeecE-N4uvmt0g" memberEnd="_44q7fF_sEeecE-N4uvmt0g _44q7nF_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7nF_sEeecE-N4uvmt0g" type="_44q7eF_sEeecE-N4uvmt0g" association="_44q7m1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7nV_sEeecE-N4uvmt0g" memberEnd="_44q7fl_sEeecE-N4uvmt0g _44q7nl_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7nl_sEeecE-N4uvmt0g" type="_44q7eF_sEeecE-N4uvmt0g" association="_44q7nV_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="_44q7n1_sEeecE-N4uvmt0g" name="InheritanceKind">
-      <ownedLiteral xmi:id="_44q7oF_sEeecE-N4uvmt0g" name="none"/>
-      <ownedLiteral xmi:id="_44q7oV_sEeecE-N4uvmt0g" name="all"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7ol_sEeecE-N4uvmt0g" memberEnd="_44q7Vl_sEeecE-N4uvmt0g _44q7o1_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7o1_sEeecE-N4uvmt0g" type="_44q7UV_sEeecE-N4uvmt0g" association="_44q7ol_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7pF_sEeecE-N4uvmt0g" name="SpecializationTypeConfiguration">
-      <generalization xmi:id="_44q7pV_sEeecE-N4uvmt0g" general="_44q7Y1_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7pl_sEeecE-N4uvmt0g" name="editHelperAdviceConfiguration" type="_44q7r1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7sl_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7p1_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7qF_sEeecE-N4uvmt0g" name="containerConfiguration" type="_44q7kF_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7s1_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7qV_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7ql_sEeecE-N4uvmt0g" name="matcherConfiguration" type="_44q7ll_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7tV_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7q1_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7rF_sEeecE-N4uvmt0g" name="specializedTypes" type="_44q7Y1_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7t1_sEeecE-N4uvmt0g">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7rV_sEeecE-N4uvmt0g"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7rl_sEeecE-N4uvmt0g" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7r1_sEeecE-N4uvmt0g" name="AbstractEditHelperAdviceConfiguration" isAbstract="true">
-      <generalization xmi:id="_44q7sF_sEeecE-N4uvmt0g" general="_44q7gl_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7sV_sEeecE-N4uvmt0g" name="target" type="_44q7pF_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7sl_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7sl_sEeecE-N4uvmt0g" memberEnd="_44q7pl_sEeecE-N4uvmt0g _44q7sV_sEeecE-N4uvmt0g"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7s1_sEeecE-N4uvmt0g" memberEnd="_44q7qF_sEeecE-N4uvmt0g _44q7tF_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7tF_sEeecE-N4uvmt0g" type="_44q7pF_sEeecE-N4uvmt0g" association="_44q7s1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7tV_sEeecE-N4uvmt0g" memberEnd="_44q7ql_sEeecE-N4uvmt0g _44q7tl_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7tl_sEeecE-N4uvmt0g" type="_44q7pF_sEeecE-N4uvmt0g" association="_44q7tV_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7t1_sEeecE-N4uvmt0g" memberEnd="_44q7rF_sEeecE-N4uvmt0g _44q7uF_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7uF_sEeecE-N4uvmt0g" type="_44q7pF_sEeecE-N4uvmt0g" association="_44q7t1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7uV_sEeecE-N4uvmt0g" name="MetamodelTypeConfiguration">
-      <generalization xmi:id="_44q7ul_sEeecE-N4uvmt0g" general="_44q7Y1_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7u1_sEeecE-N4uvmt0g" name="eClass" isOrdered="true" association="_44q7v1_sEeecE-N4uvmt0g">
-        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EClass"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7vF_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="_44q7vV_sEeecE-N4uvmt0g" name="editHelperClassName" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7vl_sEeecE-N4uvmt0g"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="_44q7v1_sEeecE-N4uvmt0g" memberEnd="_44q7u1_sEeecE-N4uvmt0g _44q7wF_sEeecE-N4uvmt0g">
-      <ownedEnd xmi:id="_44q7wF_sEeecE-N4uvmt0g" type="_44q7uV_sEeecE-N4uvmt0g" association="_44q7v1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7wV_sEeecE-N4uvmt0g" name="EditHelperAdviceConfiguration">
-      <generalization xmi:id="_44q7wl_sEeecE-N4uvmt0g" general="_44q7r1_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7w1_sEeecE-N4uvmt0g" name="editHelperAdviceClassName" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7xF_sEeecE-N4uvmt0g" name="AdviceBindingConfiguration">
-      <generalization xmi:id="_44q7xV_sEeecE-N4uvmt0g" general="_44q7eF_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7xl_sEeecE-N4uvmt0g" name="editHelperAdviceClassName" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7x1_sEeecE-N4uvmt0g" name="MatcherConfiguration">
-      <generalization xmi:id="_44q7yF_sEeecE-N4uvmt0g" general="_44q7ll_sEeecE-N4uvmt0g"/>
-      <ownedAttribute xmi:id="_44q7yV_sEeecE-N4uvmt0g" name="matcherClassName" visibility="public" isOrdered="true">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7yl_sEeecE-N4uvmt0g" name="ExternallyRegisteredType">
-      <generalization xmi:id="_44q7y1_sEeecE-N4uvmt0g" general="_44q7Y1_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_44q7zF_sEeecE-N4uvmt0g" name="ExternallyRegisteredAdvice">
-      <generalization xmi:id="_44q7zV_sEeecE-N4uvmt0g" general="_44q7xF_sEeecE-N4uvmt0g"/>
-    </packagedElement>
-    <profileApplication xmi:id="_44q7zl_sEeecE-N4uvmt0g">
-      <eAnnotations xmi:id="_44q7z1_sEeecE-N4uvmt0g" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
-      </eAnnotations>
-      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
-    </profileApplication>
-  </uml:Model>
-  <Ecore:EPackage xmi:id="_44q70F_sEeecE-N4uvmt0g" base_Package="_44q7UF_sEeecE-N4uvmt0g" nsPrefix="elementtypesconfigurations" basePackage="org.eclipse.papyrus.infra"/>
-  <Ecore:EClass xmi:id="_44q70V_sEeecE-N4uvmt0g" base_Class="_44q7UV_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q70l_sEeecE-N4uvmt0g" base_Property="_44q7U1_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q701_sEeecE-N4uvmt0g" base_Property="_44q7Vl_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q71F_sEeecE-N4uvmt0g" base_Class="_44q7XF_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q71V_sEeecE-N4uvmt0g" base_Interface="_44q7X1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q71l_sEeecE-N4uvmt0g" base_Interface="_44q7YV_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q711_sEeecE-N4uvmt0g" base_Class="_44q7Y1_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q72F_sEeecE-N4uvmt0g" base_Property="_44q7a1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q72V_sEeecE-N4uvmt0g" base_Class="_44q7b1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q72l_sEeecE-N4uvmt0g" base_Class="_44q7eF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q721_sEeecE-N4uvmt0g" base_Property="_44q7el_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q73F_sEeecE-N4uvmt0g" base_Property="_44q7fF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q73V_sEeecE-N4uvmt0g" base_Property="_44q7fl_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q73l_sEeecE-N4uvmt0g" base_Class="_44q7gl_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q731_sEeecE-N4uvmt0g" base_Property="_44q7hF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q74F_sEeecE-N4uvmt0g" base_Property="_44q7h1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44q74V_sEeecE-N4uvmt0g" base_Class="_44q7kF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q74l_sEeecE-N4uvmt0g" base_Property="_44q7kV_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44q741_sEeecE-N4uvmt0g" base_Property="_44q7k1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44riYF_sEeecE-N4uvmt0g" base_Class="_44q7ll_sEeecE-N4uvmt0g"/>
-  <Ecore:EEnum xmi:id="_44riYV_sEeecE-N4uvmt0g" base_Enumeration="_44q7n1_sEeecE-N4uvmt0g"/>
-  <Ecore:EEnumLiteral xmi:id="_44riYl_sEeecE-N4uvmt0g" base_EnumerationLiteral="_44q7oF_sEeecE-N4uvmt0g" literal="none"/>
-  <Ecore:EEnumLiteral xmi:id="_44riY1_sEeecE-N4uvmt0g" base_EnumerationLiteral="_44q7oV_sEeecE-N4uvmt0g" literal="all"/>
-  <Ecore:EClass xmi:id="_44riZF_sEeecE-N4uvmt0g" base_Class="_44q7pF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44riZV_sEeecE-N4uvmt0g" base_Property="_44q7pl_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44riZl_sEeecE-N4uvmt0g" base_Property="_44q7qF_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44riZ1_sEeecE-N4uvmt0g" base_Property="_44q7ql_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44riaF_sEeecE-N4uvmt0g" base_Property="_44q7rF_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44riaV_sEeecE-N4uvmt0g" base_Class="_44q7r1_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44rial_sEeecE-N4uvmt0g" base_Property="_44q7sV_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44ria1_sEeecE-N4uvmt0g" base_Class="_44q7uV_sEeecE-N4uvmt0g"/>
-  <Ecore:EReference xmi:id="_44ribF_sEeecE-N4uvmt0g" base_Property="_44q7u1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44ribV_sEeecE-N4uvmt0g" base_Class="_44q7wV_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44ribl_sEeecE-N4uvmt0g" base_Class="_44q7xF_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44rib1_sEeecE-N4uvmt0g" base_Class="_44q7x1_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44ricF_sEeecE-N4uvmt0g" base_Class="_44q7yl_sEeecE-N4uvmt0g"/>
-  <Ecore:EClass xmi:id="_44ricV_sEeecE-N4uvmt0g" base_Class="_44q7zF_sEeecE-N4uvmt0g"/>
-</xmi:XMI>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ADElementImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ADElementImpl.java
index 1ade72f..df6f803 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ADElementImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ADElementImpl.java
@@ -1,5 +1,5 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
+ *  Copyright (c) 2017, 2021 CEA LIST and others.
  * 
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -19,6 +20,7 @@
 
 import org.eclipse.papyrus.infra.core.architecture.ADElement;
 import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.internal.operations.ADElementOperations;
 
 /**
  * <!-- begin-user-doc -->
@@ -180,13 +182,11 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getQualifiedName() {
-		// TODO: implement this method to return the 'Qualified Name' attribute
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+		return ADElementOperations.getQualifiedName(this);
 	}
 
 	/**
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureContextImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureContextImpl.java
index 1797c2d..d84aede 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureContextImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureContextImpl.java
@@ -1,6 +1,6 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
- * 
+ * Copyright (c) 2017, 2021 CEA LIST, Christian W. Damus, and others.
+ *
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
@@ -10,6 +10,8 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
+ * 
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -20,25 +22,19 @@
 
 import org.eclipse.emf.common.notify.NotificationChain;
 
-import org.eclipse.emf.common.util.BasicDiagnostic;
-import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
-import org.eclipse.emf.ecore.plugin.EcorePlugin;
-
-import org.eclipse.emf.ecore.util.EObjectValidator;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.papyrus.infra.core.architecture.ArchitectureContext;
 import org.eclipse.papyrus.infra.core.architecture.ArchitectureDomain;
 import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
 import org.eclipse.papyrus.infra.core.architecture.ArchitectureViewpoint;
-
-import org.eclipse.papyrus.infra.core.architecture.util.ArchitectureValidator;
+import org.eclipse.papyrus.infra.core.architecture.internal.operations.ArchitectureContextOperations;
 
 import org.eclipse.papyrus.infra.types.ElementTypeSetConfiguration;
 
@@ -57,6 +53,9 @@
  *   <li>{@link org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl#getExtensionPrefix <em>Extension Prefix</em>}</li>
  *   <li>{@link org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl#getCreationCommandClass <em>Creation Command Class</em>}</li>
  *   <li>{@link org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl#getConversionCommandClass <em>Conversion Command Class</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl#getGeneralContext <em>General Context</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl#getExtendedContexts <em>Extended Contexts</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl#isExtension <em>Extension</em>}</li>
  * </ul>
  *
  * @generated
@@ -93,6 +92,16 @@
 	protected static final String CONVERSION_COMMAND_CLASS_EDEFAULT = null;
 
 	/**
+	 * The default value of the '{@link #isExtension() <em>Extension</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExtension()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXTENSION_EDEFAULT = false;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -240,24 +249,17 @@
 	 * @generated
 	 */
 	@Override
-	public boolean ceationCommandClassExists(DiagnosticChain diagnostics, Map<Object, Object> context) {
-		// TODO: implement this method
-		// -> specify the condition that violates the invariant
-		// -> verify the details of the diagnostic, including severity and message
-		// Ensure that you remove @generated or mark it @generated NOT
-		if (false) {
-			if (diagnostics != null) {
-				diagnostics.add
-					(new BasicDiagnostic
-						(Diagnostic.ERROR,
-						 ArchitectureValidator.DIAGNOSTIC_SOURCE,
-						 ArchitectureValidator.ARCHITECTURE_CONTEXT__CEATION_COMMAND_CLASS_EXISTS,
-						 EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "ceationCommandClassExists", EObjectValidator.getObjectLabel(this, context) }), //$NON-NLS-1$ //$NON-NLS-2$
-						 new Object [] { this }));
-			}
-			return false;
-		}
-		return true;
+	public ArchitectureContext getGeneralContext() {
+		return (ArchitectureContext)eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ArchitectureContext basicGetGeneralContext() {
+		return (ArchitectureContext)eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT, false, true);
 	}
 
 	/**
@@ -266,24 +268,137 @@
 	 * @generated
 	 */
 	@Override
+	public void setGeneralContext(ArchitectureContext newGeneralContext) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT, newGeneralContext);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ArchitectureContext> getExtendedContexts() {
+		return (EList<ArchitectureContext>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENDED_CONTEXTS, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__EXTENDED_CONTEXTS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean isExtension() {
+		return ArchitectureContextOperations.isExtension(this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public boolean ceationCommandClassExists(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ArchitectureContextOperations.ceationCommandClassExists(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
 	public boolean conversionCommandClassExists(DiagnosticChain diagnostics, Map<Object, Object> context) {
-		// TODO: implement this method
-		// -> specify the condition that violates the invariant
-		// -> verify the details of the diagnostic, including severity and message
-		// Ensure that you remove @generated or mark it @generated NOT
-		if (false) {
-			if (diagnostics != null) {
-				diagnostics.add
-					(new BasicDiagnostic
-						(Diagnostic.ERROR,
-						 ArchitectureValidator.DIAGNOSTIC_SOURCE,
-						 ArchitectureValidator.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS_EXISTS,
-						 EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "conversionCommandClassExists", EObjectValidator.getObjectLabel(this, context) }), //$NON-NLS-1$ //$NON-NLS-2$
-						 new Object [] { this }));
-			}
-			return false;
-		}
-		return true;
+		return ArchitectureContextOperations.conversionCommandClassExists(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean isConsistentWith(ArchitectureContext context) {
+		return ArchitectureContextOperations.isConsistentWith(this, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean contextExtensionsAreConsistent(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ArchitectureContextOperations.contextExtensionsAreConsistent(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean contextGeneralizationIsConsistent(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ArchitectureContextOperations.contextGeneralizationIsConsistent(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean creationCommandClassRequired(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ArchitectureContextOperations.creationCommandClassRequired(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public EList<ArchitectureContext> allExtendedContexts() {
+		return ArchitectureContextOperations.allExtendedContexts(this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public EList<ArchitectureContext> allGeneralContexts() {
+		return ArchitectureContextOperations.allGeneralContexts(this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean extensionCycle(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ArchitectureContextOperations.extensionCycle(this, diagnostics, context);
+	}
+					
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean generalizationCycle(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ArchitectureContextOperations.generalizationCycle(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public boolean generalNotExtended(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ArchitectureContextOperations.generalNotExtended(this, diagnostics, context);
 	}
 
 	/**
@@ -298,8 +413,9 @@
 			case ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS:
 				return ((InternalEList<InternalEObject>)(InternalEList<?>)getViewpoints()).basicAdd(otherEnd, msgs);
 			case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
-				if (eInternalContainer() != null)
+				if (eInternalContainer() != null) {
 					msgs = eBasicRemoveFromContainer(msgs);
+				}
 				return basicSetDomain((ArchitectureDomain)otherEnd, msgs);
 		}
 		return super.eInverseAdd(otherEnd, featureID, msgs);
@@ -357,6 +473,15 @@
 				return getCreationCommandClass();
 			case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
 				return getConversionCommandClass();
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT:
+				if (resolve) {
+					return getGeneralContext();
+				}
+				return basicGetGeneralContext();
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENDED_CONTEXTS:
+				return getExtendedContexts();
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION:
+				return isExtension();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -394,6 +519,13 @@
 			case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
 				setConversionCommandClass((String)newValue);
 				return;
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT:
+				setGeneralContext((ArchitectureContext)newValue);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENDED_CONTEXTS:
+				getExtendedContexts().clear();
+				getExtendedContexts().addAll((Collection<? extends ArchitectureContext>)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -427,6 +559,12 @@
 			case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
 				setConversionCommandClass(CONVERSION_COMMAND_CLASS_EDEFAULT);
 				return;
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT:
+				setGeneralContext((ArchitectureContext)null);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENDED_CONTEXTS:
+				getExtendedContexts().clear();
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -453,6 +591,12 @@
 				return CREATION_COMMAND_CLASS_EDEFAULT == null ? getCreationCommandClass() != null : !CREATION_COMMAND_CLASS_EDEFAULT.equals(getCreationCommandClass());
 			case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
 				return CONVERSION_COMMAND_CLASS_EDEFAULT == null ? getConversionCommandClass() != null : !CONVERSION_COMMAND_CLASS_EDEFAULT.equals(getConversionCommandClass());
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__GENERAL_CONTEXT:
+				return basicGetGeneralContext() != null;
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENDED_CONTEXTS:
+				return !getExtendedContexts().isEmpty();
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION:
+				return isExtension() != EXTENSION_EDEFAULT;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -470,6 +614,24 @@
 				return ceationCommandClassExists((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
 			case ArchitecturePackage.ARCHITECTURE_CONTEXT___CONVERSION_COMMAND_CLASS_EXISTS__DIAGNOSTICCHAIN_MAP:
 				return conversionCommandClassExists((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___IS_CONSISTENT_WITH__ARCHITECTURECONTEXT:
+				return isConsistentWith((ArchitectureContext)arguments.get(0));
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___CONTEXT_EXTENSIONS_ARE_CONSISTENT__DIAGNOSTICCHAIN_MAP:
+				return contextExtensionsAreConsistent((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___CONTEXT_GENERALIZATION_IS_CONSISTENT__DIAGNOSTICCHAIN_MAP:
+				return contextGeneralizationIsConsistent((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___CREATION_COMMAND_CLASS_REQUIRED__DIAGNOSTICCHAIN_MAP:
+				return creationCommandClassRequired((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___ALL_EXTENDED_CONTEXTS:
+				return allExtendedContexts();
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___ALL_GENERAL_CONTEXTS:
+				return allGeneralContexts();
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___EXTENSION_CYCLE__DIAGNOSTICCHAIN_MAP:
+				return extensionCycle((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___GENERALIZATION_CYCLE__DIAGNOSTICCHAIN_MAP:
+				return generalizationCycle((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
+			case ArchitecturePackage.ARCHITECTURE_CONTEXT___GENERAL_NOT_EXTENDED__DIAGNOSTICCHAIN_MAP:
+				return generalNotExtended((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1));
 		}
 		return super.eInvoke(operationID, arguments);
 	}
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionLanguageImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionLanguageImpl.java
index f425de0..af4f2b0 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionLanguageImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionLanguageImpl.java
@@ -1,5 +1,5 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
+ *  Copyright (c) 2017, 2021 CEA LIST and others.
  * 
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -170,7 +171,9 @@
 			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS:
 				return getRepresentationKinds();
 			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL:
-				if (resolve) return getMetamodel();
+				if (resolve) {
+					return getMetamodel();
+				}
 				return basicGetMetamodel();
 			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES:
 				return getProfiles();
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitecturePackageImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitecturePackageImpl.java
index e9d91fa..2131f8c 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitecturePackageImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitecturePackageImpl.java
@@ -1,5 +1,5 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
+ *  Copyright (c) 2017, 2021 CEA LIST and others.
  * 
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -173,7 +174,9 @@
 	 * @generated
 	 */
 	public static ArchitecturePackage init() {
-		if (isInited) return (ArchitecturePackage)EPackage.Registry.INSTANCE.getEPackage(ArchitecturePackage.eNS_URI);
+		if (isInited) {
+			return (ArchitecturePackage)EPackage.Registry.INSTANCE.getEPackage(ArchitecturePackage.eNS_URI);
+		}
 
 		// Obtain or create and register package
 		Object registeredArchitecturePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
@@ -575,6 +578,36 @@
 	 * @generated
 	 */
 	@Override
+	public EReference getArchitectureContext_GeneralContext() {
+		return (EReference)architectureContextEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getArchitectureContext_ExtendedContexts() {
+		return (EReference)architectureContextEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getArchitectureContext_Extension() {
+		return (EAttribute)architectureContextEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EOperation getArchitectureContext__CeationCommandClassExists__DiagnosticChain_Map() {
 		return architectureContextEClass.getEOperations().get(0);
 	}
@@ -595,6 +628,96 @@
 	 * @generated
 	 */
 	@Override
+	public EOperation getArchitectureContext__IsConsistentWith__ArchitectureContext() {
+		return architectureContextEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__ContextExtensionsAreConsistent__DiagnosticChain_Map() {
+		return architectureContextEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__ContextGeneralizationIsConsistent__DiagnosticChain_Map() {
+		return architectureContextEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__CreationCommandClassRequired__DiagnosticChain_Map() {
+		return architectureContextEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__AllExtendedContexts() {
+		return architectureContextEClass.getEOperations().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__AllGeneralContexts() {
+		return architectureContextEClass.getEOperations().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__ExtensionCycle__DiagnosticChain_Map() {
+		return architectureContextEClass.getEOperations().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__GeneralizationCycle__DiagnosticChain_Map() {
+		return architectureContextEClass.getEOperations().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EOperation getArchitectureContext__GeneralNotExtended__DiagnosticChain_Map() {
+		return architectureContextEClass.getEOperations().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EClass getArchitectureFramework() {
 		return architectureFrameworkEClass;
 	}
@@ -684,7 +807,9 @@
 	 * @generated
 	 */
 	public void createPackageContents() {
-		if (isCreated) return;
+		if (isCreated) {
+			return;
+		}
 		isCreated = true;
 
 		// Create classes and their features
@@ -731,8 +856,20 @@
 		createEAttribute(architectureContextEClass, ARCHITECTURE_CONTEXT__EXTENSION_PREFIX);
 		createEAttribute(architectureContextEClass, ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS);
 		createEAttribute(architectureContextEClass, ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS);
+		createEReference(architectureContextEClass, ARCHITECTURE_CONTEXT__GENERAL_CONTEXT);
+		createEReference(architectureContextEClass, ARCHITECTURE_CONTEXT__EXTENDED_CONTEXTS);
+		createEAttribute(architectureContextEClass, ARCHITECTURE_CONTEXT__EXTENSION);
 		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___CEATION_COMMAND_CLASS_EXISTS__DIAGNOSTICCHAIN_MAP);
 		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___CONVERSION_COMMAND_CLASS_EXISTS__DIAGNOSTICCHAIN_MAP);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___IS_CONSISTENT_WITH__ARCHITECTURECONTEXT);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___CONTEXT_EXTENSIONS_ARE_CONSISTENT__DIAGNOSTICCHAIN_MAP);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___CONTEXT_GENERALIZATION_IS_CONSISTENT__DIAGNOSTICCHAIN_MAP);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___CREATION_COMMAND_CLASS_REQUIRED__DIAGNOSTICCHAIN_MAP);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___ALL_EXTENDED_CONTEXTS);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___ALL_GENERAL_CONTEXTS);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___EXTENSION_CYCLE__DIAGNOSTICCHAIN_MAP);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___GENERALIZATION_CYCLE__DIAGNOSTICCHAIN_MAP);
+		createEOperation(architectureContextEClass, ARCHITECTURE_CONTEXT___GENERAL_NOT_EXTENDED__DIAGNOSTICCHAIN_MAP);
 
 		architectureFrameworkEClass = createEClass(ARCHITECTURE_FRAMEWORK);
 
@@ -761,7 +898,9 @@
 	 * @generated
 	 */
 	public void initializePackageContents() {
-		if (isInitialized) return;
+		if (isInitialized) {
+			return;
+		}
 		isInitialized = true;
 
 		// Initialize package
@@ -771,7 +910,6 @@
 
 		// Obtain other dependent packages
 		ElementTypesConfigurationsPackage theElementTypesConfigurationsPackage = (ElementTypesConfigurationsPackage)EPackage.Registry.INSTANCE.getEPackage(ElementTypesConfigurationsPackage.eNS_URI);
-		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
 
 		// Create type parameters
 
@@ -829,24 +967,88 @@
 		initEReference(getArchitectureContext_ElementTypes(), theElementTypesConfigurationsPackage.getElementTypeSetConfiguration(), null, "elementTypes", null, 0, -1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
 		initEReference(getArchitectureContext_Domain(), this.getArchitectureDomain(), this.getArchitectureDomain_Contexts(), "domain", null, 1, 1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
 		initEAttribute(getArchitectureContext_ExtensionPrefix(), ecorePackage.getEString(), "extensionPrefix", null, 0, 1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
-		initEAttribute(getArchitectureContext_CreationCommandClass(), ecorePackage.getEString(), "creationCommandClass", null, 1, 1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getArchitectureContext_CreationCommandClass(), ecorePackage.getEString(), "creationCommandClass", null, 0, 1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
 		initEAttribute(getArchitectureContext_ConversionCommandClass(), ecorePackage.getEString(), "conversionCommandClass", null, 0, 1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEReference(getArchitectureContext_GeneralContext(), this.getArchitectureContext(), null, "generalContext", null, 0, 1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEReference(getArchitectureContext_ExtendedContexts(), this.getArchitectureContext(), null, "extendedContexts", null, 0, -1, ArchitectureContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getArchitectureContext_Extension(), ecorePackage.getEBoolean(), "extension", null, 1, 1, ArchitectureContext.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
 
 		EOperation op = initEOperation(getArchitectureContext__CeationCommandClassExists__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "ceationCommandClassExists", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
-		addEParameter(op, theEcorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
-		EGenericType g1 = createEGenericType(theEcorePackage.getEMap());
-		EGenericType g2 = createEGenericType(theEcorePackage.getEJavaObject());
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		EGenericType g1 = createEGenericType(ecorePackage.getEMap());
+		EGenericType g2 = createEGenericType(ecorePackage.getEJavaObject());
 		g1.getETypeArguments().add(g2);
-		g2 = createEGenericType(theEcorePackage.getEJavaObject());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
 		g1.getETypeArguments().add(g2);
 		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
 		op = initEOperation(getArchitectureContext__ConversionCommandClassExists__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "conversionCommandClassExists", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
-		addEParameter(op, theEcorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
-		g1 = createEGenericType(theEcorePackage.getEMap());
-		g2 = createEGenericType(theEcorePackage.getEJavaObject());
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
 		g1.getETypeArguments().add(g2);
-		g2 = createEGenericType(theEcorePackage.getEJavaObject());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getArchitectureContext__IsConsistentWith__ArchitectureContext(), ecorePackage.getEBoolean(), "isConsistentWith", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getArchitectureContext(), "context", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getArchitectureContext__ContextExtensionsAreConsistent__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "contextExtensionsAreConsistent", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getArchitectureContext__ContextGeneralizationIsConsistent__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "contextGeneralizationIsConsistent", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getArchitectureContext__CreationCommandClassRequired__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "creationCommandClassRequired", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		initEOperation(getArchitectureContext__AllExtendedContexts(), this.getArchitectureContext(), "allExtendedContexts", 0, -1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		initEOperation(getArchitectureContext__AllGeneralContexts(), this.getArchitectureContext(), "allGeneralContexts", 0, -1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getArchitectureContext__ExtensionCycle__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "extensionCycle", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getArchitectureContext__GeneralizationCycle__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "generalizationCycle", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getArchitectureContext__GeneralNotExtended__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "generalNotExtended", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+		g1 = createEGenericType(ecorePackage.getEMap());
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
+		g1.getETypeArguments().add(g2);
+		g2 = createEGenericType(ecorePackage.getEJavaObject());
 		g1.getETypeArguments().add(g2);
 		addEParameter(op, g1, "context", 0, 1, !IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
 
@@ -863,6 +1065,32 @@
 
 		// Create resource
 		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/papyrus/infra/core/architecture
+		createArchitectureAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/papyrus/infra/core/architecture</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createArchitectureAnnotations() {
+		String source = "http://www.eclipse.org/papyrus/infra/core/architecture"; //$NON-NLS-1$
+		addAnnotation
+		  (getArchitectureContext_CreationCommandClass(),
+		   source,
+		   new String[] {
+			   "classConstraint", "bundleclass://org.eclipse.papyrus.infra.architecture/org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+		addAnnotation
+		  (getArchitectureContext_ConversionCommandClass(),
+		   source,
+		   new String[] {
+			   "classConstraint", "bundleclass://org.eclipse.papyrus.infra.architecture/org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
 	}
 
 } //ArchitecturePackageImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureViewpointImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureViewpointImpl.java
index 2db3a89..49b5651 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureViewpointImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureViewpointImpl.java
@@ -1,5 +1,5 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
+ *  Copyright (c) 2017, 2021 CEA LIST and others.
  * 
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -124,8 +125,9 @@
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
-				if (eInternalContainer() != null)
+				if (eInternalContainer() != null) {
 					msgs = eBasicRemoveFromContainer(msgs);
+				}
 				return basicSetContext((ArchitectureContext)otherEnd, msgs);
 		}
 		return super.eInverseAdd(otherEnd, featureID, msgs);
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ConcernImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ConcernImpl.java
index 402d420..ff000e3 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ConcernImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ConcernImpl.java
@@ -1,5 +1,5 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
+ *  Copyright (c) 2017, 2021 CEA LIST and others.
  * 
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -94,8 +95,9 @@
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case ArchitecturePackage.CONCERN__DOMAIN:
-				if (eInternalContainer() != null)
+				if (eInternalContainer() != null) {
 					msgs = eBasicRemoveFromContainer(msgs);
+				}
 				return basicSetDomain((ArchitectureDomain)otherEnd, msgs);
 		}
 		return super.eInverseAdd(otherEnd, featureID, msgs);
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/RepresentationKindImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/RepresentationKindImpl.java
index f1235e0..93ddf04 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/RepresentationKindImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/RepresentationKindImpl.java
@@ -1,5 +1,5 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
+ *  Copyright (c) 2017, 2021 CEA LIST and others.
  * 
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -142,8 +143,9 @@
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
-				if (eInternalContainer() != null)
+				if (eInternalContainer() != null) {
 					msgs = eBasicRemoveFromContainer(msgs);
+				}
 				return basicSetLanguage((ArchitectureDescriptionLanguage)otherEnd, msgs);
 		}
 		return super.eInverseAdd(otherEnd, featureID, msgs);
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/StakeholderImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/StakeholderImpl.java
index 6b0a9d5..ddd2260 100644
--- a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/StakeholderImpl.java
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/StakeholderImpl.java
@@ -1,5 +1,5 @@
 /**
- *  Copyright (c) 2017 CEA LIST and others.
+ *  Copyright (c) 2017, 2021 CEA LIST and others.
  * 
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  * 
  *  Contributors:
  *  Maged Elaasar - Initial API and implementation
+ *  Christian W. Damus - bug 570486
  */
 package org.eclipse.papyrus.infra.core.architecture.cdo;
 
@@ -111,8 +112,9 @@
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
-				if (eInternalContainer() != null)
+				if (eInternalContainer() != null) {
 					msgs = eBasicRemoveFromContainer(msgs);
+				}
 				return basicSetDomain((ArchitectureDomain)otherEnd, msgs);
 		}
 		return super.eInverseAdd(otherEnd, featureID, msgs);