Bug 575438 - [SysML] add element group display in the model explorer
 + in addition fix some reference to plugin.properties in some plugin
 + add a missing about.html

Signed-off-by: Patrick <Patrick.Tessier@cea.fr>
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
Change-Id: I3fb0dcbd45ad5404d39f846ccb9f5a7b430309ae
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/.project b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/.project
new file mode 100644
index 0000000..c701d3e
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.sysml16.elementgroup.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/build.properties b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+               feature.properties
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.properties b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.properties
new file mode 100755
index 0000000..bd80142
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.properties
@@ -0,0 +1,8 @@
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=Papyrus SysML 1.6 Element Group Feature
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project 
+
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.xml b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.xml
new file mode 100644
index 0000000..279a9c0
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.papyrus.sysml16.elementgroup.feature"
+      label="%featureName"
+      version="1.0.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="2.0.2">
+
+   <description url="https://eclipse.org/papyrus/">
+      This feature contains plugins in order to create a glossary for models
+   </description>
+
+   <copyright url="https://www.eclipse.org/legal/epl-2.0/">
+      Copyright (c) 2021 CEA LIST
+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
+https://www.eclipse.org/legal/epl-2.0/ 
+SPDX-License-Identifier: EPL-2.0
+   </copyright>
+
+     <requires>
+      <import feature="org.eclipse.papyrus.sysml16.feature" version="2.1.0" match="compatible"/>
+   </requires>
+   
+   <plugin
+         id="org.eclipse.papyrus.sysml16.elementgroup"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.sysml16.elementgroup.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/pom.xml b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/pom.xml
new file mode 100644
index 0000000..b703ee1
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<artifactId>org.eclipse.papyrus.sysml16.features</artifactId>
+		<groupId>org.eclipse.papyrus.sysml</groupId>
+		<version>2.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.papyrus.sysml16.elementgroup.feature</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-feature</packaging>
+
+	<name>Element group tools</name>
+	<description>Set of eclipse artifacts to use SysML</description>
+</project>
\ No newline at end of file
diff --git a/features/pom.xml b/features/pom.xml
index cf7ab83..e70a3d8 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -15,6 +15,7 @@
 	<modules>
 		<module>org.eclipse.papyrus.sysml16.feature</module>
 		<module>org.eclipse.papyrus.sysml16.requirements.extension.feature</module>
+		<module>org.eclipse.papyrus.sysml16.elementgroup.feature</module>
 	</modules>
 
 	<profiles>
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/about.html b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/about.html
new file mode 100755
index 0000000..164f781
--- /dev/null
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+	<h2>About This Content</h2>
+
+	<p>November 30, 2017</p>
+	<h3>License</h3>
+
+	<p>
+		The Eclipse Foundation makes available all content in this plug-in
+		(&quot;Content&quot;). Unless otherwise indicated below, the Content
+		is provided to you under the terms and conditions of the Eclipse
+		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+		available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
+
+	<p>
+		If you did not receive this Content directly from the Eclipse
+		Foundation, the Content is being redistributed by another party
+		(&quot;Redistributor&quot;) and different terms and conditions may
+		apply to your use of any object code in the Content. Check the
+		Redistributor's license that was provided with the Content. If no such
+		license exists, contact the Redistributor. Unless otherwise indicated
+		below, the terms and conditions of the EPL still apply to any source
+		code in the Content and such source code may be obtained at <a
+			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+	</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties
index 8d77138..89ff2fa 100644
--- a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties
@@ -14,7 +14,9 @@
                icons/,\
                META-INF/,\
                plugin.xml,\
-               plugin.properties
+               plugin.properties,\
+               about.html
 jars.compile.order = .
 source.. = src-gen/
 output.. = bin/
+src.includes = about.html
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties
index 5e40667..6376af4 100644
--- a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties
@@ -9,8 +9,8 @@
 #   Nicolas FAUVERGUE (CEA LIST) nicolas.fauvergue@cea.fr - Initial API and implementation
 # 
 
-pluginName = Papyrus SysML 1.6 Requirements Extension Profile Edit Support
-providerName = Eclipse Modeling Project
+Bundle-Name = Papyrus SysML 1.6 Requirements Extension Profile Edit Support
+Bundle-Vendor = Eclipse Modeling Project
 
 _UI_CreateChild_text = {0}
 _UI_CreateChild_text2 = {1} {0}
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF
index 0c6c14d..cd84ae1 100644
--- a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF
@@ -17,4 +17,4 @@
 Bundle-Localization: plugin
 Bundle-Description: %Bundle-Description
 Bundle-Vendor: %Bundle-Vendor
-Automatic-Module-Name: org.eclipse.papyrus.sysml16.ui
+Automatic-Module-Name: org.eclipse.papyrus.sysml16.requirements.extension.ui
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.classpath b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.classpath
new file mode 100644
index 0000000..e801ebf
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.project b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.project
new file mode 100644
index 0000000..30c964d
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.sysml16.elementgroup.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..7adc0fb
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,10 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/META-INF/MANIFEST.MF b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c2eb834
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.papyrus.sysml16.elementgroup.ui
+Bundle-SymbolicName: org.eclipse.papyrus.sysml16.elementgroup.ui;singleton:=true
+Bundle-Name: %Bundle-Name
+Bundle-Version: 1.0.0.qualifier
+Bundle-Description: %Bundle-Description
+Bundle-Localization: plugin 
+Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.papyrus.emf.facet.query.java.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.uml.tools;bundle-version="[5.1.0,6.0.0)",
+ org.eclipse.papyrus.sysml16.elementgroup;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.emf.facet.efacet.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.sysml16;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.emf.facet.efacet.metamodel;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.registry;bundle-version="[3.0.200,4.0.0)",
+ org.eclipse.osgi;bundle-version="[3.0.0,4.0.0)"
+Bundle-ManifestVersion: 2
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-Vendor: %Bundle-Vendor
+Export-Package: org.eclipse.papyrus.sysml16.elementgroup.ui,
+ org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.papyrus.sysml16.elementgroup.ui.Activator
+
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/about.html b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/about.html
new file mode 100755
index 0000000..164f781
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+	<h2>About This Content</h2>
+
+	<p>November 30, 2017</p>
+	<h3>License</h3>
+
+	<p>
+		The Eclipse Foundation makes available all content in this plug-in
+		(&quot;Content&quot;). Unless otherwise indicated below, the Content
+		is provided to you under the terms and conditions of the Eclipse
+		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+		available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
+
+	<p>
+		If you did not receive this Content directly from the Eclipse
+		Foundation, the Content is being redistributed by another party
+		(&quot;Redistributor&quot;) and different terms and conditions may
+		apply to your use of any object code in the Content. Check the
+		Redistributor's license that was provided with the Content. If no such
+		license exists, contact the Redistributor. Unless otherwise indicated
+		below, the terms and conditions of the EPL still apply to any source
+		code in the Content and such source code may be obtained at <a
+			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+	</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/build.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/build.properties
new file mode 100644
index 0000000..d944aef
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/,\
+               resources/,\
+               about.html
+src.includes = about.html
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/icons/Cluster.png b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/icons/Cluster.png
new file mode 100644
index 0000000..80cb50a
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/icons/Cluster.png
Binary files differ
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.properties
new file mode 100644
index 0000000..cd4286b
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2021 CEA LIST.
+# 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
+# https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#     Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+##################################################################################
+Bundle-Name=Papyrus SysML 1.6 Element Group UI
+Bundle-Description=This plug-in contains the SysML 1.6 model explorer for ElementGroup.
+Bundle-Vendor=Eclipse Modeling Project
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.xml
new file mode 100644
index 0000000..d7d294f
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.papyrus.emf.facet.util.emf.core.modeldeclaration">
+      <modeldeclaration
+            file="resources/ElementGroup.custom">
+      </modeldeclaration>
+   </extension>
+   <extension point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+      <profile
+            description="Profile used to add a dynamic cluster"
+            iconpath="icons/Cluster.png"
+            name="Cluster ML"
+            path="pathmap://CLUSTER_PATHMAP/cluster.profile.uml"
+            provider="Eclipse Modeling Project">
+      </profile>
+   </extension>
+
+</plugin>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/pom.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/pom.xml
new file mode 100644
index 0000000..53145de
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.papyrus.sysml</groupId>
+		<artifactId>org.eclipse.papyrus.sysml16.elementgroup.plugins</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.papyrus.sysml16.elementgroup.ui</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/resources/ElementGroup.custom b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/resources/ElementGroup.custom
new file mode 100644
index 0000000..d9114a7
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/resources/ElementGroup.custom
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="ElementGroup" documentation="This customization is used to display Requirement by using element group" mustBeLoadedByDefault="true">
+  <eClassifiers xsi:type="custom:EClassCustomization" name="Element">
+    <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//Element"/>
+    <facetElements xsi:type="efacet:FacetReference" name="orderedMembers" upperBound="-1" volatile="true" transient="true" derived="true">
+      <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Element"/>
+      <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.OrderedMembersQuery"/>
+    </facetElements>
+    <facetElements xsi:type="efacet:FacetReference" name="dynamicMembers" upperBound="-1" volatile="true" transient="true" derived="true">
+      <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Element"/>
+      <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.DynamicMembersQuery"/>
+    </facetElements>
+    <facetOperations name="displayName">
+      <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eParameters name="eReference">
+        <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EReference"/>
+      </eParameters>
+      <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.DisplayElementGroupNameQuery"/>
+      <override xsi:type="efacet:FacetOperation" href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject/label"/>
+    </facetOperations>
+    <facetOperations name="displayElementGroupBold">
+      <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+      <eParameters name="eObject">
+        <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+      </eParameters>
+      <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.IsBoldQuery"/>
+      <override xsi:type="efacet:FacetOperation" href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject/isBold"/>
+    </facetOperations>
+    <extendedFacets href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject"/>
+  </eClassifiers>
+</custom:Customization>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/Activator.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/Activator.java
new file mode 100644
index 0000000..4a5752f
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/Activator.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/** The activator class controls the plug-in life cycle */
+public class Activator extends Plugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.sysml16.elementgroup.ui"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	@Override
+	public void start(final BundleContext context) throws Exception {
+		super.start(context);
+		Activator.plugin = this;
+	}
+
+	@Override
+	public void stop(final BundleContext context) throws Exception {
+		Activator.plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 * 
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return Activator.plugin;
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DisplayElementGroupNameQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DisplayElementGroupNameQuery.java
new file mode 100644
index 0000000..6f761f3
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DisplayElementGroupNameQuery.java
@@ -0,0 +1,51 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+import org.eclipse.papyrus.uml.tools.providers.DelegatingItemLabelProvider;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class DisplayElementGroupNameQuery implements IJavaQuery2<Element, String> {
+
+	private static final IItemLabelProvider labelProvider = new DelegatingItemLabelProvider();
+
+	public String evaluate(final Element context,
+			final IParameterValueList2 parameterValues,
+			final IFacetManager facetManager)
+			throws DerivedTypedElementException {
+
+		if (parameterValues.getParameterValueByName("eReference") != null) { //$NON-NLS-1$
+			if (parameterValues.getParameterValueByName("eReference").getValue() != null) { //$NON-NLS-1$
+				return labelProvider.getText(parameterValues.getParameterValueByName("eReference").getValue()); //$NON-NLS-1$
+			}
+		}
+		ElementGroup elementGroup = UMLUtil.getStereotypeApplication(context, ElementGroup.class);
+		if (elementGroup != null) {
+			if (elementGroup.getName() != null) {
+				return elementGroup.getName();
+			}
+			return ""; //$NON-NLS-1$
+		} else {
+			return labelProvider.getText(context);
+		}
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DynamicMembersQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DynamicMembersQuery.java
new file mode 100644
index 0000000..2ac7b41
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DynamicMembersQuery.java
@@ -0,0 +1,42 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+
+public class DynamicMembersQuery implements IJavaQuery2<Element, Collection<Element>> {
+
+	public Collection<Element> evaluate(final Element context,
+			final IParameterValueList2 parameterValues,
+			final IFacetManager facetManager)
+			throws DerivedTypedElementException {
+		IntentionalElementGroup dynamicCluster = UMLUtil.getStereotypeApplication(context, IntentionalElementGroup.class);
+		if (dynamicCluster == null) {
+			return Collections.emptyList();
+		} else {
+			return dynamicCluster.getComputedMembers();
+		}
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/IsBoldQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/IsBoldQuery.java
new file mode 100644
index 0000000..a3c2638
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/IsBoldQuery.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class IsBoldQuery implements IJavaQuery2<Element, Boolean> {
+
+	public Boolean evaluate(final Element context,
+			final IParameterValueList2 parameterValues,
+			final IFacetManager facetManager)
+			throws DerivedTypedElementException {
+
+		ElementGroup elementGroup = UMLUtil.getStereotypeApplication(context, ElementGroup.class);
+
+		if (elementGroup == null) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/OrderedMembersQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/OrderedMembersQuery.java
new file mode 100644
index 0000000..eac7bb6
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/OrderedMembersQuery.java
@@ -0,0 +1,45 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+public class OrderedMembersQuery implements IJavaQuery2<Element, Collection<Element>> {
+	
+	
+	public Collection<Element> evaluate(final Element context,
+			final IParameterValueList2 parameterValues,
+			final IFacetManager facetManager)
+			throws DerivedTypedElementException {
+
+		ElementGroup elementGroup = UMLUtil.getStereotypeApplication(context, ElementGroup.class);
+		if (elementGroup == null) {
+			return Collections.emptyList();
+		} else {
+			Collection<Element> collec = elementGroup.getMember();
+			return collec;
+		}
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.classpath b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.classpath
new file mode 100644
index 0000000..bb64293
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.project b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.project
new file mode 100644
index 0000000..7e2a63a
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.sysml16.elementgroup</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.papyrus.plugin.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.papyrus.plugin.nature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.settings/org.eclipse.jdt.core.prefs b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..25169a3
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,24 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/META-INF/MANIFEST.MF b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..20fb758
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/META-INF/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.sysml16.elementgroup;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.sysml16.elementgroup.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Description: %Bundle-Description
+Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.uml2.uml.profile.standard;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.uml2.types;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.ocl.pivot;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.ocl.pivot.uml;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.sysml16;bundle-version="[2.0.0,3.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Export-Package: org.eclipse.papyrus.sysml16.elementgroup,
+ org.eclipse.papyrus.sysml16.elementgroup.api,
+ org.eclipse.papyrus.sysml16.elementgroup.internal,
+ org.eclipse.papyrus.sysml16.elementgroup.internal.impl,
+ org.eclipse.papyrus.sysml16.elementgroup.cluster,
+ org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl,
+ org.eclipse.papyrus.sysml16.elementgroup.cluster.util
+Automatic-Module-Name: org.eclipse.papyrus.sysml16.elementgroup
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/about.html b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/about.html
new file mode 100755
index 0000000..164f781
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+	<h2>About This Content</h2>
+
+	<p>November 30, 2017</p>
+	<h3>License</h3>
+
+	<p>
+		The Eclipse Foundation makes available all content in this plug-in
+		(&quot;Content&quot;). Unless otherwise indicated below, the Content
+		is provided to you under the terms and conditions of the Eclipse
+		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+		available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
+
+	<p>
+		If you did not receive this Content directly from the Eclipse
+		Foundation, the Content is being redistributed by another party
+		(&quot;Redistributor&quot;) and different terms and conditions may
+		apply to your use of any object code in the Content. Check the
+		Redistributor's license that was provided with the Content. If no such
+		license exists, contact the Redistributor. Unless otherwise indicated
+		below, the terms and conditions of the EPL still apply to any source
+		code in the Content and such source code may be obtained at <a
+			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+	</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/build.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/build.properties
new file mode 100644
index 0000000..6a4209a
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+           src-gen/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               resources/,\
+               plugin.properties,\
+               about.html
+src.includes = about.html
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.properties
new file mode 100644
index 0000000..99df1f4
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.properties
@@ -0,0 +1,16 @@
+#################################################################################
+# Copyright (c) 2021 CEA LIST.
+# 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
+# https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#     Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+##################################################################################
+
+pluginName = Papyrus SysML 1.6 Element Group 
+providerName =Eclipse Modeling Project
+Bundle-Description=This plug-in contains the SysML 1.6 ElementGroup.
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.xml
new file mode 100644
index 0000000..6b93e2e
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+    <extension point="org.eclipse.emf.ecore.uri_mapping">
+   <!-- @generated NOT cluster -->
+      <mapping
+            source="pathmap://CLUSTER_PATHMAP/"
+            target="platform:/plugin/org.eclipse.papyrus.sysml16.elementgroup/resources/">
+      </mapping>
+   </extension>
+   <extension
+         point="org.eclipse.uml2.uml.generated_package">
+         <!-- @generated NOT cluster -->
+      <profile
+            location="pathmap://CLUSTER_PATHMAP/cluster.profile.uml#ClusterProfile-ID"
+            uri="http://www.eclipse.org/papyrus/Cluster">
+      </profile>
+   </extension>
+   <extension
+         point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            class="org.eclipse.papyrus.sysml16.elementgroup.internal.impl.CustomClusterFactoryImpl"
+            uri="http://www.eclipse.org/papyrus/Cluster">
+      </factory>
+   </extension>
+
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated cluster.profile -->
+      <package
+            uri="http://www.eclipse.org/papyrus/Cluster"
+            class="org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage"
+            genModel="resources/cluster.profile.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/pom.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/pom.xml
new file mode 100644
index 0000000..e8f2d3d
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.papyrus.sysml</groupId>
+		<artifactId>org.eclipse.papyrus.sysml16.elementgroup.plugins</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.papyrus.sysml16.elementgroup</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.di b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.di
new file mode 100644
index 0000000..785b011
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.sysml.architecture.SysML16"/>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.notation b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.notation
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.notation
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.uml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.uml
new file mode 100644
index 0000000..a3b3351
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.uml
@@ -0,0 +1,89 @@
+<?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:Requirements="http://www.eclipse.org/papyrus/sysml/1.6/SysML/Requirements" 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/papyrus/sysml/1.6/SysML/Requirements http://www.eclipse.org/papyrus/sysml/1.6/SysML#//requirements">
+  <uml:Model xmi:id="_ppCjsIwcEeiP09V4EdWAwg" name="Design">
+    <ownedComment xmi:type="uml:Comment" xmi:id="_xTZAQIwcEeiP09V4EdWAwg">
+      <body>VisualisationReq001:&#xD;
+ Each category shall been seen in the model explorer. &#xD;
+VisualisationReq002:&#xD;
+All the elements referenced by the categories are displayed as if they were contained by this category.&#xD;
+</body>
+    </ownedComment>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_pu1CoIwcEeiP09V4EdWAwg">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+    </packageImport>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_pvNdIIwcEeiP09V4EdWAwg">
+      <importedPackage xmi:type="uml:Package" href="pathmap://SysML16_LIBRARIES/SysML-Standard-Library.uml#SysML.package_packagedElement_Libraries"/>
+    </packageImport>
+    <packagedElement xmi:type="uml:Class" xmi:id="_LpRH0IwdEeiP09V4EdWAwg" name="RequirementCluster:">
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_ikH6AIwdEeiP09V4EdWAwg" name="StructureReq001&#xD;"/>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_ikQc4IwdEeiP09V4EdWAwg" name="StructureReq002&#xD;"/>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_ikS5IIwdEeiP09V4EdWAwg" name="StructureReq003&#xD;"/>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_ikUuUIwdEeiP09V4EdWAwg" name="StructureReq004&#xD;"/>
+    </packagedElement>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puuU8IwcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puwxMIwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_pux_UIwcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pux_UYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//activities"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Activities"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_pux_UowcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puymYIwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//allocations"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Allocations"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puymYYwcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puymYowcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//blocks"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Blocks"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puymY4wcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puymZIwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//constraintblocks"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ConstraintBlocks"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puzNcIwcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puzNcYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//deprecatedelements"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_DeprecatedElements"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puzNcowcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puzNc4wcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//modelelements"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puzNdIwcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puzNdYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//portsandflows"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Ports_u0026Flows"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puz0gIwcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puz0gYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//requirements"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Requirements"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puz0gowcEeiP09V4EdWAwg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puz0g4wcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Model>
+  <Requirements:Requirement xmi:id="_LpiNkIwdEeiP09V4EdWAwg" id="RequirementCluster" text="The idea is to use ElementGroup of SysML in order to cluster elements by categories and not only by the structure of UML i. e. the owner of the element.&#xD;" base_Class="_LpRH0IwdEeiP09V4EdWAwg"/>
+  <Requirements:Requirement xmi:id="_ikNZkIwdEeiP09V4EdWAwg" id="StructureReq001&#xD;" text="A category is a SysML elementGroup.&#xD;" base_Class="_ikH6AIwdEeiP09V4EdWAwg"/>
+  <Requirements:Requirement xmi:id="_ikSSEIwdEeiP09V4EdWAwg" id="StructureReq002&#xD;" text="A category can be contained into another category.&#xD;" base_Class="_ikQc4IwdEeiP09V4EdWAwg"/>
+  <Requirements:Requirement xmi:id="_ikUHQIwdEeiP09V4EdWAwg" id="StructureReq003&#xD;" text="A DerivedElementGroup must inherits from elementGroup. A request can be associated to a category in order to compute children. The default behavior is to write request in OCL.&#xD;" base_Class="_ikS5IIwdEeiP09V4EdWAwg"/>
+  <Requirements:Requirement xmi:id="_ikV8cIwdEeiP09V4EdWAwg" id="StructureReq004&#xD;" text="A request can be associated to a category in order to compute children. The default behavior is to write request with EASE.&#xD;" base_Class="_ikUuUIwdEeiP09V4EdWAwg"/>
+</xmi:XMI>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.di b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.di
new file mode 100644
index 0000000..247ed5e
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.uml.architecture.Profile"/>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.ecore b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.ecore
new file mode 100644
index 0000000..ce0ff66
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.ecore
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="cluster" nsURI="http://www.eclipse.org/papyrus/Cluster" nsPrefix="Cluster">
+  <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+    <details key="originalName" value="Cluster"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="IntentionalElementGroup" eSuperTypes="../../org.eclipse.papyrus.sysml16/resources/profile/SysML.profile.ecore#//modelelements/ElementGroup">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="computedBy" ordered="false"
+        upperBound="-1" eType="#//OpaqueRequest" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="computedMembers" ordered="false"
+        upperBound="-1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Element"
+        volatile="true" transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OpaqueRequest">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="request" ordered="false"
+        lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false"
+        lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.genmodel b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.genmodel
new file mode 100644
index 0000000..1e83db0
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.genmodel
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+    copyrightText=" Copyright (c) 2021 CEA LIST, and others.&#xA;&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License 2.0&#xA; which accompanies this distribution, and is available at&#xA; https://www.eclipse.org/legal/epl-2.0/&#xA;&#xA; SPDX-License-Identifier: EPL-2.0&#xA;&#xA; Contributors:&#xA;   Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation&#xA;"
+    modelDirectory="/org.eclipse.papyrus.sysml16.elementgroup/src-gen" editDirectory="/org.eclipse.papyrus.sysml16.elementgroup.edit/src-gen"
+    editorDirectory="/org.eclipse.papyrus.sysml16.elementgroup.editor/src-gen" modelPluginID="org.eclipse.papyrus.sysml16.elementgroup"
+    modelName="Cluster" editPluginClass="org.eclipse.papyrus.sysml16.cluster.provider.ClusterEditPlugin"
+    editorPluginClass="org.eclipse.papyrus.sysml16.cluster.presentation.ClusterEditorPlugin"
+    nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" commentFormatting="true" testsDirectory="/org.eclipse.papyrus.sysml16.elementgroup.tests/src-gen"
+    importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+    editPluginID="org.eclipse.papyrus.sysml16.elementgroup.edit" editorPluginID="org.eclipse.papyrus.sysml16.elementgroup.editor"
+    usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.uml.profile.standard/model/Standard.genmodel#//standard ../../org.eclipse.papyrus.sysml16/resources/profile/SysML.profile.genmodel#//sysml ../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+    operationReflection="true" importOrganizing="true" cleanup="true" eclipsePlatformVersion="2021-03">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+    <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="REPORT"/>
+    <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+    <details key="NON_API_INVARIANTS" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+    <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+    <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+  </genAnnotations>
+  <foreignModel>cluster.profile.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="Cluster" basePackage="org.eclipse.papyrus.sysml16.elementgroup"
+      disposableProviderFactory="true" classPackageSuffix="internal.impl" ecorePackage="cluster.profile.ecore#/">
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="cluster.profile.ecore#//IntentionalElementGroup">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference cluster.profile.ecore#//IntentionalElementGroup/computedBy"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference cluster.profile.ecore#//IntentionalElementGroup/computedMembers"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="cluster.profile.ecore#//OpaqueRequest">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute cluster.profile.ecore#//OpaqueRequest/request"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute cluster.profile.ecore#//OpaqueRequest/language"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.notation b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.notation
new file mode 100644
index 0000000..511224c
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.notation
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_06r-4IRMEeiExpZ7uQR-NA" type="PapyrusUMLProfileDiagram" name="Profile Diagram" measurementUnit="Pixel">
+  <children xmi:type="notation:Shape" xmi:id="_2r42wIRMEeiExpZ7uQR-NA" type="Stereotype_Shape">
+    <children xmi:type="notation:DecorationNode" xmi:id="_2r42woRMEeiExpZ7uQR-NA" type="Stereotype_NameLabel"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_2r42w4RMEeiExpZ7uQR-NA" type="Stereotype_AttributeCompartment">
+      <children xmi:type="notation:Shape" xmi:id="_TH3vMIRNEeiExpZ7uQR-NA" type="Property_ClassAttributeLabel">
+        <element xmi:type="uml:Property" href="cluster.profile.uml#_TH0r4IRNEeiExpZ7uQR-NA"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_TH3vMYRNEeiExpZ7uQR-NA"/>
+      </children>
+      <children xmi:type="notation:Shape" xmi:id="_zl8SIIRPEeiExpZ7uQR-NA" type="Property_ClassAttributeLabel">
+        <element xmi:type="uml:Property" href="cluster.profile.uml#_zlzIMIRPEeiExpZ7uQR-NA"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zl8SIYRPEeiExpZ7uQR-NA"/>
+      </children>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_2r42xIRMEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_2r42xYRMEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_2r42xoRMEeiExpZ7uQR-NA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2r42x4RMEeiExpZ7uQR-NA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_2r42yIRMEeiExpZ7uQR-NA" visible="false" type="Stereotype_OperationCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_2r42yYRMEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_2r42yoRMEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_2r42y4RMEeiExpZ7uQR-NA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2r42zIRMEeiExpZ7uQR-NA"/>
+    </children>
+    <element xmi:type="uml:Stereotype" href="cluster.profile.uml#_2rvs0IRMEeiExpZ7uQR-NA"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2r42wYRMEeiExpZ7uQR-NA" x="320" y="260"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_BQ0OEYRNEeiExpZ7uQR-NA" type="DataType_Shape">
+    <children xmi:type="notation:DecorationNode" xmi:id="_BQ0OE4RNEeiExpZ7uQR-NA" type="DataType_NameLabel"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_BQ0OFIRNEeiExpZ7uQR-NA" type="DataType_AttributeCompartment">
+      <children xmi:type="notation:Shape" xmi:id="_EEeogIRNEeiExpZ7uQR-NA" type="Property_DataTypeAttributeLabel">
+        <element xmi:type="uml:Property" href="cluster.profile.uml#_EEeBcIRNEeiExpZ7uQR-NA"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EEeogYRNEeiExpZ7uQR-NA"/>
+      </children>
+      <children xmi:type="notation:Shape" xmi:id="_K3LEUIRNEeiExpZ7uQR-NA" type="Property_DataTypeAttributeLabel">
+        <element xmi:type="uml:Property" href="cluster.profile.uml#_K25XgIRNEeiExpZ7uQR-NA"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_K3LEUYRNEeiExpZ7uQR-NA"/>
+      </children>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_BQ0OFYRNEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_BQ0OFoRNEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_BQ0OF4RNEeiExpZ7uQR-NA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BQ0OGIRNEeiExpZ7uQR-NA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_BQ0OGYRNEeiExpZ7uQR-NA" visible="false" type="DataType_OperationCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_BQ0OGoRNEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_BQ0OG4RNEeiExpZ7uQR-NA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_BQ0OHIRNEeiExpZ7uQR-NA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BQ0OHYRNEeiExpZ7uQR-NA"/>
+    </children>
+    <element xmi:type="uml:DataType" href="cluster.profile.uml#_BQ0OEIRNEeiExpZ7uQR-NA"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BQ0OEoRNEeiExpZ7uQR-NA" x="600" y="260" width="161" height="101"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_ImXF4P6GEeuBk6vx1EJOLw" type="Stereotype_Shape">
+    <children xmi:type="notation:DecorationNode" xmi:id="_ImclcP6GEeuBk6vx1EJOLw" type="Stereotype_NameLabel"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_ImdMgP6GEeuBk6vx1EJOLw" visible="false" type="Stereotype_AttributeCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ImdMgf6GEeuBk6vx1EJOLw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_ImdMgv6GEeuBk6vx1EJOLw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_ImdMg_6GEeuBk6vx1EJOLw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ImdMhP6GEeuBk6vx1EJOLw"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_ImdMhf6GEeuBk6vx1EJOLw" visible="false" type="Stereotype_OperationCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ImdMhv6GEeuBk6vx1EJOLw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_ImdMh_6GEeuBk6vx1EJOLw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_ImdMiP6GEeuBk6vx1EJOLw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ImdMif6GEeuBk6vx1EJOLw"/>
+    </children>
+    <element xmi:type="uml:Stereotype" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements.stereotype_packagedElement_ElementGroup"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ImXF4f6GEeuBk6vx1EJOLw" x="320" y="160" width="221" height="40"/>
+  </children>
+  <styles xmi:type="notation:StringValueStyle" xmi:id="_06r-4YRMEeiExpZ7uQR-NA" name="diagram_compatibility_version" stringValue="1.4.0"/>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_06r-4oRMEeiExpZ7uQR-NA"/>
+  <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_06r-44RMEeiExpZ7uQR-NA" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+    <owner xmi:type="uml:Profile" href="cluster.profile.uml#_06Fh8IRMEeiExpZ7uQR-NA"/>
+  </styles>
+  <element xmi:type="uml:Profile" href="cluster.profile.uml#_06Fh8IRMEeiExpZ7uQR-NA"/>
+  <edges xmi:type="notation:Connector" xmi:id="_NdDuwIwfEeiWkZcpYQDxUw" type="Generalization_Edge" source="_2r42wIRMEeiExpZ7uQR-NA" target="_ImXF4P6GEeuBk6vx1EJOLw">
+    <children xmi:type="notation:DecorationNode" xmi:id="_NdEV0IwfEeiWkZcpYQDxUw" type="Generalization_StereotypeLabel">
+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Pk4W4IwfEeiWkZcpYQDxUw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_NdEV0YwfEeiWkZcpYQDxUw" y="59"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_NdDuwYwfEeiWkZcpYQDxUw"/>
+    <element xmi:type="uml:Generalization" href="cluster.profile.uml#_Ncr7UIwfEeiWkZcpYQDxUw"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NdDuwowfEeiWkZcpYQDxUw" points="[360, 260, -643984, -643984]$[220, 166, -643984, -643984]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NeX9YIwfEeiWkZcpYQDxUw" id="(0.45871559633027525,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NeX9YYwfEeiWkZcpYQDxUw" id="(0.45248868778280543,1.0)"/>
+  </edges>
+</notation:Diagram>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.uml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.uml
new file mode 100644
index 0000000..11895be
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.uml
@@ -0,0 +1,55 @@
+<?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:Profile xmi:id="ClusterProfile-ID" name="Cluster">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLiNYIRNEeiExpZ7uQR-NA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ja3sAP6GEeuBk6vx1EJOLw" source="PapyrusVersion">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sAf6GEeuBk6vx1EJOLw" key="Version" value="0.0.0"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sAv6GEeuBk6vx1EJOLw" key="Comment" value="&lt;undefined>"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sA_6GEeuBk6vx1EJOLw" key="Copyright" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sBP6GEeuBk6vx1EJOLw" key="Date" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sBf6GEeuBk6vx1EJOLw" key="Author" value="&lt;undefined>"/>
+      </eAnnotations>
+    </eAnnotations>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_1BXOoIRMEeiExpZ7uQR-NA">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+    </packageImport>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_1BXOoYRMEeiExpZ7uQR-NA">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+    </packageImport>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_9A7tQIRMEeiExpZ7uQR-NA">
+      <importedPackage xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements"/>
+    </packageImport>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_K18ikIwfEeiWkZcpYQDxUw">
+      <importedPackage xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements"/>
+    </packageImport>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_2rvs0IRMEeiExpZ7uQR-NA" name="IntentionalElementGroup">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Ncr7UIwfEeiWkZcpYQDxUw">
+        <general xmi:type="uml:Stereotype" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements.stereotype_packagedElement_ElementGroup"/>
+      </generalization>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_TH0r4IRNEeiExpZ7uQR-NA" name="computedBy" visibility="public" type="_BQ0OEIRNEeiExpZ7uQR-NA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b1K2gIRNEeiExpZ7uQR-NA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b2V7MIRNEeiExpZ7uQR-NA" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_zlzIMIRPEeiExpZ7uQR-NA" name="computedMembers" visibility="public" isDerived="true">
+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OkxQEIRQEeiExpZ7uQR-NA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ok7BEIRQEeiExpZ7uQR-NA" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:DataType" xmi:id="_BQ0OEIRNEeiExpZ7uQR-NA" name="OpaqueRequest">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_EEeBcIRNEeiExpZ7uQR-NA" name="request" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_K25XgIRNEeiExpZ7uQR-NA" name="language">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+    </packagedElement>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_ZZxOQIRREeiExpZ7uQR-NA">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZZxOQYRREeiExpZ7uQR-NA" 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 xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Profile>
+  <Ecore:EPackage xmi:id="_axsqgIRREeiExpZ7uQR-NA" base_Package="ClusterProfile-ID" packageName="cluster" nsURI="http://www.eclipse.org/papyrus/Cluster" basePackage="com.cea.papyrus.sysml"/>
+</xmi:XMI>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterFactory.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterFactory.java
new file mode 100755
index 0000000..189480e
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterFactory.java
@@ -0,0 +1,68 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage
+ * @generated
+ */
+public interface ClusterFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	ClusterFactory eINSTANCE = org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Intentional Element Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Intentional Element Group</em>'.
+	 * @generated
+	 */
+	IntentionalElementGroup createIntentionalElementGroup();
+
+	/**
+	 * Returns a new object of class '<em>Opaque Request</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Opaque Request</em>'.
+	 * @generated
+	 */
+	OpaqueRequest createOpaqueRequest();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ClusterPackage getClusterPackage();
+
+} // ClusterFactory
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterPackage.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterPackage.java
new file mode 100755
index 0000000..a7d4907
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterPackage.java
@@ -0,0 +1,437 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.sysml16.modelelements.ModelElementsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Cluster'"
+ * @generated
+ */
+public interface ClusterPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "cluster"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/Cluster"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "Cluster"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	ClusterPackage eINSTANCE = org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl <em>Intentional Element Group</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getIntentionalElementGroup()
+	 * @generated
+	 */
+	int INTENTIONAL_ELEMENT_GROUP = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Comment</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__BASE_COMMENT = ModelElementsPackage.ELEMENT_GROUP__BASE_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Criterion</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__CRITERION = ModelElementsPackage.ELEMENT_GROUP__CRITERION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__MEMBER = ModelElementsPackage.ELEMENT_GROUP__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__NAME = ModelElementsPackage.ELEMENT_GROUP__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Ordered Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__ORDERED_MEMBER = ModelElementsPackage.ELEMENT_GROUP__ORDERED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__SIZE = ModelElementsPackage.ELEMENT_GROUP__SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Computed By</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY = ModelElementsPackage.ELEMENT_GROUP_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Computed Members</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS = ModelElementsPackage.ELEMENT_GROUP_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Intentional Element Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP_FEATURE_COUNT = ModelElementsPackage.ELEMENT_GROUP_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>All Groups</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP___ALL_GROUPS__ELEMENT_ELIST = ModelElementsPackage.ELEMENT_GROUP___ALL_GROUPS__ELEMENT_ELIST;
+
+	/**
+	 * The operation id for the '<em>Criterion</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP___CRITERION__STRING = ModelElementsPackage.ELEMENT_GROUP___CRITERION__STRING;
+
+	/**
+	 * The operation id for the '<em>Member</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP___MEMBER__ELIST = ModelElementsPackage.ELEMENT_GROUP___MEMBER__ELIST;
+
+	/**
+	 * The operation id for the '<em>Size</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP___SIZE__INT = ModelElementsPackage.ELEMENT_GROUP___SIZE__INT;
+
+	/**
+	 * The number of operations of the '<em>Intentional Element Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INTENTIONAL_ELEMENT_GROUP_OPERATION_COUNT = ModelElementsPackage.ELEMENT_GROUP_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl <em>Opaque Request</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getOpaqueRequest()
+	 * @generated
+	 */
+	int OPAQUE_REQUEST = 1;
+
+	/**
+	 * The feature id for the '<em><b>Request</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPAQUE_REQUEST__REQUEST = 0;
+
+	/**
+	 * The feature id for the '<em><b>Language</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPAQUE_REQUEST__LANGUAGE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Opaque Request</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPAQUE_REQUEST_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Opaque Request</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPAQUE_REQUEST_OPERATION_COUNT = 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup <em>Intentional Element Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Intentional Element Group</em>'.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup
+	 * @generated
+	 */
+	EClass getIntentionalElementGroup();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedBy <em>Computed By</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Computed By</em>'.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedBy()
+	 * @see #getIntentionalElementGroup()
+	 * @generated
+	 */
+	EReference getIntentionalElementGroup_ComputedBy();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedMembers <em>Computed Members</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Computed Members</em>'.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedMembers()
+	 * @see #getIntentionalElementGroup()
+	 * @generated
+	 */
+	EReference getIntentionalElementGroup_ComputedMembers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest <em>Opaque Request</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Opaque Request</em>'.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest
+	 * @generated
+	 */
+	EClass getOpaqueRequest();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest <em>Request</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Request</em>'.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest()
+	 * @see #getOpaqueRequest()
+	 * @generated
+	 */
+	EAttribute getOpaqueRequest_Request();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage <em>Language</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Language</em>'.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage()
+	 * @see #getOpaqueRequest()
+	 * @generated
+	 */
+	EAttribute getOpaqueRequest_Language();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ClusterFactory getClusterFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl <em>Intentional Element Group</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl
+		 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getIntentionalElementGroup()
+		 * @generated
+		 */
+		EClass INTENTIONAL_ELEMENT_GROUP = eINSTANCE.getIntentionalElementGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Computed By</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY = eINSTANCE.getIntentionalElementGroup_ComputedBy();
+
+		/**
+		 * The meta object literal for the '<em><b>Computed Members</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS = eINSTANCE.getIntentionalElementGroup_ComputedMembers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl <em>Opaque Request</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl
+		 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getOpaqueRequest()
+		 * @generated
+		 */
+		EClass OPAQUE_REQUEST = eINSTANCE.getOpaqueRequest();
+
+		/**
+		 * The meta object literal for the '<em><b>Request</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute OPAQUE_REQUEST__REQUEST = eINSTANCE.getOpaqueRequest_Request();
+
+		/**
+		 * The meta object literal for the '<em><b>Language</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute OPAQUE_REQUEST__LANGUAGE = eINSTANCE.getOpaqueRequest_Language();
+
+	}
+
+} // ClusterPackage
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/IntentionalElementGroup.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/IntentionalElementGroup.java
new file mode 100755
index 0000000..14c5bab
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/IntentionalElementGroup.java
@@ -0,0 +1,75 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Intentional Element Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedBy <em>Computed By</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedMembers <em>Computed Members</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getIntentionalElementGroup()
+ * @model
+ * @generated
+ */
+public interface IntentionalElementGroup extends ElementGroup {
+	/**
+	 * Returns the value of the '<em><b>Computed By</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Computed By</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Computed By</em>' containment reference list.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getIntentionalElementGroup_ComputedBy()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<OpaqueRequest> getComputedBy();
+
+	/**
+	 * Returns the value of the '<em><b>Computed Members</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.uml2.uml.Element}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Computed Members</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Computed Members</em>' reference list.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getIntentionalElementGroup_ComputedMembers()
+	 * @model transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	EList<Element> getComputedMembers();
+
+} // IntentionalElementGroup
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/OpaqueRequest.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/OpaqueRequest.java
new file mode 100755
index 0000000..3962d03
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/OpaqueRequest.java
@@ -0,0 +1,95 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Opaque Request</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest <em>Request</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage <em>Language</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getOpaqueRequest()
+ * @model
+ * @generated
+ */
+public interface OpaqueRequest extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Request</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Request</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Request</em>' attribute.
+	 * @see #setRequest(String)
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getOpaqueRequest_Request()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getRequest();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest <em>Request</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Request</em>' attribute.
+	 * @see #getRequest()
+	 * @generated
+	 */
+	void setRequest(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Language</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Language</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Language</em>' attribute.
+	 * @see #setLanguage(String)
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getOpaqueRequest_Language()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getLanguage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage <em>Language</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Language</em>' attribute.
+	 * @see #getLanguage()
+	 * @generated
+	 */
+	void setLanguage(String value);
+
+} // OpaqueRequest
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterFactoryImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterFactoryImpl.java
new file mode 100755
index 0000000..6b08a65
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterFactoryImpl.java
@@ -0,0 +1,130 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ClusterFactoryImpl extends EFactoryImpl implements ClusterFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static ClusterFactory init() {
+		try {
+			ClusterFactory theClusterFactory = (ClusterFactory) EPackage.Registry.INSTANCE.getEFactory(ClusterPackage.eNS_URI);
+			if (theClusterFactory != null) {
+				return theClusterFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ClusterFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ClusterFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP:
+			return createIntentionalElementGroup();
+		case ClusterPackage.OPAQUE_REQUEST:
+			return createOpaqueRequest();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public IntentionalElementGroup createIntentionalElementGroup() {
+		IntentionalElementGroupImpl intentionalElementGroup = new IntentionalElementGroupImpl();
+		return intentionalElementGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public OpaqueRequest createOpaqueRequest() {
+		OpaqueRequestImpl opaqueRequest = new OpaqueRequestImpl();
+		return opaqueRequest;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ClusterPackage getClusterPackage() {
+		return (ClusterPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ClusterPackage getPackage() {
+		return ClusterPackage.eINSTANCE;
+	}
+
+} // ClusterFactoryImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterPackageImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterPackageImpl.java
new file mode 100755
index 0000000..7517af8
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterPackageImpl.java
@@ -0,0 +1,322 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterFactory;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+
+import org.eclipse.papyrus.sysml16.modelelements.ModelElementsPackage;
+
+import org.eclipse.papyrus.sysml16.sysml.SysMLPackage;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ClusterPackageImpl extends EPackageImpl implements ClusterPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass intentionalElementGroupEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass opaqueRequestEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ClusterPackageImpl() {
+		super(eNS_URI, ClusterFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link ClusterPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static ClusterPackage init() {
+		if (isInited) {
+			return (ClusterPackage) EPackage.Registry.INSTANCE.getEPackage(ClusterPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		Object registeredClusterPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		ClusterPackageImpl theClusterPackage = registeredClusterPackage instanceof ClusterPackageImpl ? (ClusterPackageImpl) registeredClusterPackage : new ClusterPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
+		SysMLPackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theClusterPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theClusterPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theClusterPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ClusterPackage.eNS_URI, theClusterPackage);
+		return theClusterPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getIntentionalElementGroup() {
+		return intentionalElementGroupEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getIntentionalElementGroup_ComputedBy() {
+		return (EReference) intentionalElementGroupEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getIntentionalElementGroup_ComputedMembers() {
+		return (EReference) intentionalElementGroupEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getOpaqueRequest() {
+		return opaqueRequestEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getOpaqueRequest_Request() {
+		return (EAttribute) opaqueRequestEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getOpaqueRequest_Language() {
+		return (EAttribute) opaqueRequestEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ClusterFactory getClusterFactory() {
+		return (ClusterFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		intentionalElementGroupEClass = createEClass(INTENTIONAL_ELEMENT_GROUP);
+		createEReference(intentionalElementGroupEClass, INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY);
+		createEReference(intentionalElementGroupEClass, INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS);
+
+		opaqueRequestEClass = createEClass(OPAQUE_REQUEST);
+		createEAttribute(opaqueRequestEClass, OPAQUE_REQUEST__REQUEST);
+		createEAttribute(opaqueRequestEClass, OPAQUE_REQUEST__LANGUAGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModelElementsPackage theModelElementsPackage = (ModelElementsPackage) EPackage.Registry.INSTANCE.getEPackage(ModelElementsPackage.eNS_URI);
+		UMLPackage theUMLPackage = (UMLPackage) EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage) EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		intentionalElementGroupEClass.getESuperTypes().add(theModelElementsPackage.getElementGroup());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(intentionalElementGroupEClass, IntentionalElementGroup.class, "IntentionalElementGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getIntentionalElementGroup_ComputedBy(), this.getOpaqueRequest(), null, "computedBy", null, 0, -1, IntentionalElementGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, //$NON-NLS-1$
+				!IS_DERIVED, !IS_ORDERED);
+		initEReference(getIntentionalElementGroup_ComputedMembers(), theUMLPackage.getElement(), null, "computedMembers", null, 0, -1, IntentionalElementGroup.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, //$NON-NLS-1$
+				IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+
+		initEClass(opaqueRequestEClass, OpaqueRequest.class, "OpaqueRequest", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getOpaqueRequest_Request(), theTypesPackage.getString(), "request", null, 1, 1, OpaqueRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getOpaqueRequest_Language(), theTypesPackage.getString(), "language", null, 1, 1, OpaqueRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$
+		addAnnotation(this,
+				source,
+				new String[] {
+						"originalName", "Cluster" //$NON-NLS-1$ //$NON-NLS-2$
+				});
+	}
+
+} // ClusterPackageImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/IntentionalElementGroupImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/IntentionalElementGroupImpl.java
new file mode 100755
index 0000000..e8ae359
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/IntentionalElementGroupImpl.java
@@ -0,0 +1,201 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+
+import org.eclipse.papyrus.sysml16.modelelements.internal.impl.ElementGroupImpl;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Intentional Element Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl#getComputedBy <em>Computed By</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl#getComputedMembers <em>Computed Members</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IntentionalElementGroupImpl extends ElementGroupImpl implements IntentionalElementGroup {
+	/**
+	 * The cached value of the '{@link #getComputedBy() <em>Computed By</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getComputedBy()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<OpaqueRequest> computedBy;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IntentionalElementGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ClusterPackage.Literals.INTENTIONAL_ELEMENT_GROUP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<OpaqueRequest> getComputedBy() {
+		if (computedBy == null) {
+			computedBy = new EObjectContainmentEList<>(OpaqueRequest.class, this, ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY);
+		}
+		return computedBy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<Element> getComputedMembers() {
+		// TODO: implement this method to return the 'Computed Members' reference list
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+			return ((InternalEList<?>) getComputedBy()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+			return getComputedBy();
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+			return getComputedMembers();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+			getComputedBy().clear();
+			getComputedBy().addAll((Collection<? extends OpaqueRequest>) newValue);
+			return;
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+			getComputedMembers().clear();
+			getComputedMembers().addAll((Collection<? extends Element>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+			getComputedBy().clear();
+			return;
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+			getComputedMembers().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+			return computedBy != null && !computedBy.isEmpty();
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+			return !getComputedMembers().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // IntentionalElementGroupImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/OpaqueRequestImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/OpaqueRequestImpl.java
new file mode 100755
index 0000000..79f48a8
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/OpaqueRequestImpl.java
@@ -0,0 +1,252 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Opaque Request</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl#getRequest <em>Request</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl#getLanguage <em>Language</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class OpaqueRequestImpl extends MinimalEObjectImpl.Container implements OpaqueRequest {
+	/**
+	 * The default value of the '{@link #getRequest() <em>Request</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getRequest()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String REQUEST_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getRequest() <em>Request</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getRequest()
+	 * @generated
+	 * @ordered
+	 */
+	protected String request = REQUEST_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLanguage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LANGUAGE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLanguage()
+	 * @generated
+	 * @ordered
+	 */
+	protected String language = LANGUAGE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected OpaqueRequestImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ClusterPackage.Literals.OPAQUE_REQUEST;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getRequest() {
+		return request;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setRequest(String newRequest) {
+		String oldRequest = request;
+		request = newRequest;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, ClusterPackage.OPAQUE_REQUEST__REQUEST, oldRequest, request));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLanguage() {
+		return language;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLanguage(String newLanguage) {
+		String oldLanguage = language;
+		language = newLanguage;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, ClusterPackage.OPAQUE_REQUEST__LANGUAGE, oldLanguage, language));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+			return getRequest();
+		case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+			return getLanguage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+			setRequest((String) newValue);
+			return;
+		case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+			setLanguage((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+			setRequest(REQUEST_EDEFAULT);
+			return;
+		case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+			setLanguage(LANGUAGE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+			return REQUEST_EDEFAULT == null ? request != null : !REQUEST_EDEFAULT.equals(request);
+		case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+			return LANGUAGE_EDEFAULT == null ? language != null : !LANGUAGE_EDEFAULT.equals(language);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (request: "); //$NON-NLS-1$
+		result.append(request);
+		result.append(", language: "); //$NON-NLS-1$
+		result.append(language);
+		result.append(')');
+		return result.toString();
+	}
+
+} // OpaqueRequestImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterAdapterFactory.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterAdapterFactory.java
new file mode 100755
index 0000000..8336e18
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterAdapterFactory.java
@@ -0,0 +1,183 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.*;
+
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage
+ * @generated
+ */
+public class ClusterAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static ClusterPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ClusterAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ClusterPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ClusterSwitch<Adapter> modelSwitch = new ClusterSwitch<>() {
+		@Override
+		public Adapter caseIntentionalElementGroup(IntentionalElementGroup object) {
+			return createIntentionalElementGroupAdapter();
+		}
+
+		@Override
+		public Adapter caseOpaqueRequest(OpaqueRequest object) {
+			return createOpaqueRequestAdapter();
+		}
+
+		@Override
+		public Adapter caseElementGroup(ElementGroup object) {
+			return createElementGroupAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup <em>Intentional Element Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup
+	 * @generated
+	 */
+	public Adapter createIntentionalElementGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest <em>Opaque Request</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest
+	 * @generated
+	 */
+	public Adapter createOpaqueRequestAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sysml16.modelelements.ElementGroup <em>Element Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.sysml16.modelelements.ElementGroup
+	 * @generated
+	 */
+	public Adapter createElementGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // ClusterAdapterFactory
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterSwitch.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterSwitch.java
new file mode 100755
index 0000000..a2f83b8
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterSwitch.java
@@ -0,0 +1,182 @@
+/**
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.*;
+
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage
+ * @generated
+ */
+public class ClusterSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static ClusterPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ClusterSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ClusterPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param ePackage
+	 *            the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case ClusterPackage.INTENTIONAL_ELEMENT_GROUP: {
+			IntentionalElementGroup intentionalElementGroup = (IntentionalElementGroup) theEObject;
+			T result = caseIntentionalElementGroup(intentionalElementGroup);
+			if (result == null) {
+				result = caseElementGroup(intentionalElementGroup);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case ClusterPackage.OPAQUE_REQUEST: {
+			OpaqueRequest opaqueRequest = (OpaqueRequest) theEObject;
+			T result = caseOpaqueRequest(opaqueRequest);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Intentional Element Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Intentional Element Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIntentionalElementGroup(IntentionalElementGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Opaque Request</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Opaque Request</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOpaqueRequest(OpaqueRequest object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Element Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Element Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseElementGroup(ElementGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // ClusterSwitch
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/Activator.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/Activator.java
new file mode 100644
index 0000000..376e3c2
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/Activator.java
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	/** The plug-in ID **/
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.sysml16.elementgroup"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/IRequestDispatcher.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/IRequestDispatcher.java
new file mode 100644
index 0000000..4410c76
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/IRequestDispatcher.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This Interface declare method to execute a request
+ *
+ */
+public interface IRequestDispatcher {
+
+	/**
+	 * @param language
+	 *            the type of the language to execute the request
+	 * @param context
+	 *            the element context
+	 * @param request
+	 *            the request
+	 * @return the list of element
+	 * @throws Exception
+	 *             if the language is not knew or if the request is bad build.
+	 */
+	BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception;
+
+}
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/RequestDispatcherDelegation.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/RequestDispatcherDelegation.java
new file mode 100644
index 0000000..ca38cc9
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/RequestDispatcherDelegation.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.sysml16.elementgroup.internal.RequestDispatcher;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * This class is used to execute request from the model
+ *
+ */
+public class RequestDispatcherDelegation implements IRequestDispatcher {
+
+	private RequestDispatcher requestDispatcher = new RequestDispatcher();
+
+
+	/**
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher#executeRequest(java.lang.String, org.eclipse.emf.ecore.EObject, java.lang.String)
+	 */
+
+	@Override
+	public BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception {
+		return requestDispatcher.executeRequest(language, context, request);
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/IRequestDispatcher.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/IRequestDispatcher.java
new file mode 100755
index 0000000..af2e172
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/IRequestDispatcher.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api.copy;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This Interface declare method to execute a request
+ *
+ */
+public interface IRequestDispatcher {
+
+	/**
+	 * @param language
+	 *            the type of the language to execute the request
+	 * @param context
+	 *            the element context
+	 * @param request
+	 *            the request
+	 * @return the list of element
+	 * @throws Exception
+	 *             if the language is not knew or if the request is bad build.
+	 */
+	BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception;
+
+}
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/RequestDispatcherDelegation.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/RequestDispatcherDelegation.java
new file mode 100755
index 0000000..0171cae
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/RequestDispatcherDelegation.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api.copy;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.sysml16.elementgroup.internal.RequestDispatcher;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * This class is used to execute request from the model
+ *
+ */
+public class RequestDispatcherDelegation implements IRequestDispatcher {
+
+	private RequestDispatcher requestDispatcher = new RequestDispatcher();
+
+
+	/**
+	 * @see org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher#executeRequest(java.lang.String, org.eclipse.emf.ecore.EObject, java.lang.String)
+	 */
+
+	@Override
+	public BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception {
+		return requestDispatcher.executeRequest(language, context, request);
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/RequestDispatcher.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/RequestDispatcher.java
new file mode 100644
index 0000000..0a157e3
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/RequestDispatcher.java
@@ -0,0 +1,82 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.internal;
+
+import java.util.Collection;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.ocl.pivot.ExpressionInOCL;
+import org.eclipse.ocl.pivot.utilities.OCL;
+import org.eclipse.ocl.pivot.utilities.OCLHelper;
+import org.eclipse.ocl.pivot.values.SetValue;
+import org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This class is used to execute request from the model
+ * for the moment only OCL requests can be interpreted
+ *
+ */
+public class RequestDispatcher implements IRequestDispatcher {
+	private static final String OCL_LANGUAGE = "OCL"; //$NON-NLS-1$
+
+	/**
+	 * execute an OCL request
+	 * 
+	 * @param context
+	 *            the OCL context
+	 * @param request
+	 *            the OCL that represent a request
+	 * @return a list of element
+	 * @throws Exception
+	 *             if the request is bad build
+	 */
+	@SuppressWarnings("unchecked")
+	public BasicEList<Element> executeOCLRequest(EObject context, String request) throws Exception {
+		OCL ocl = OCL.newInstance();
+		org.eclipse.ocl.pivot.Class contextType = ocl.getContextType(context);
+		OCLHelper oclHelper = ocl.createOCLHelper(contextType);
+		ExpressionInOCL createQuery = oclHelper.createQuery(request);
+		Object evaluate = ocl.evaluate(context, createQuery);
+		if (evaluate instanceof SetValue) {
+			return new BasicEList<Element>((Collection<? extends Element>) ((SetValue) evaluate).getElements());
+		}
+		return new BasicEList<Element>();
+	}
+
+	/**
+	 * @param language
+	 *            the type of the language to execute the request
+	 * @param context
+	 *            the element context
+	 * @param request
+	 *            the request
+	 * @return the list of element
+	 * @throws Exception
+	 *             if the language is not knew or if the request is bad build.
+	 */
+	public BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception {
+		if (language != null) {
+			if (OCL_LANGUAGE.equals(language)) {
+				return executeOCLRequest(context, request);
+			}
+			throw new ExecutionException("The language is not knew"); //$NON-NLS-1$
+
+		}
+		throw new ExecutionException("The language cannot be null"); //$NON-NLS-1$
+	}
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomClusterFactoryImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomClusterFactoryImpl.java
new file mode 100644
index 0000000..1eed545
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomClusterFactoryImpl.java
@@ -0,0 +1,34 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.internal.impl;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterFactoryImpl;
+
+
+/**
+ * This overload the generated in order to create a CustomDynamicCluster.
+ * It implement the EditionReq003: It is possible to fill a property of the stereotype "DynamicCluster" in order to write the request.*
+ *
+ */
+public class CustomClusterFactoryImpl extends ClusterFactoryImpl {
+	
+	@Override
+	public IntentionalElementGroup createIntentionalElementGroup() {
+		IntentionalElementGroup dynamicCluster = new CustomIntentionalElementGroupImpl();
+		return dynamicCluster;
+	}
+
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomIntentionalElementGroupImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomIntentionalElementGroupImpl.java
new file mode 100644
index 0000000..1c991ff
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomIntentionalElementGroupImpl.java
@@ -0,0 +1,138 @@
+/*****************************************************************************
+ *  Copyright (c) 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
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *    Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ * 
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.internal.impl;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.util.EcoreEList.UnmodifiableEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher;
+import org.eclipse.papyrus.sysml16.elementgroup.api.RequestDispatcherDelegation;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl;
+import org.eclipse.papyrus.sysml16.modelelements.ModelElementsPackage;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * This overload the generated in order to create a CustomDynamicCluster.
+ * It implement the EditionReq003: It is possible to fill a property of the stereotype "DynamicCluster" in order to write the request.*
+ *
+ */
+@SuppressWarnings("restriction")
+public class CustomIntentionalElementGroupImpl extends IntentionalElementGroupImpl implements IntentionalElementGroup {
+
+	protected IRequestDispatcher requestDispatcherDelegation = new RequestDispatcherDelegation();
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public CustomIntentionalElementGroupImpl() {
+		super();
+	}
+
+	protected EList<OpaqueRequest> computedBy;
+
+	@Override
+	public EList<Element> getComputedMembers() {
+		if (getComputedBy().size() > 0) {
+			OpaqueRequest opaqueRequest = getComputedBy().get(0);
+			try {
+				return requestDispatcherDelegation.executeRequest(opaqueRequest.getLanguage(), this.getBase_Comment(), opaqueRequest.getRequest());
+			} catch (Exception e) {
+				String body = this.getBase_Comment().getBody();
+				IEditingDomainProvider domainProvider = (IEditingDomainProvider) EcoreUtil.getExistingAdapter(this.getBase_Comment().eResource().getResourceSet(), IEditingDomainProvider.class);
+				SetCommand setCommand = new SetCommand(domainProvider.getEditingDomain(), this.getBase_Comment(), UMLPackage.eINSTANCE.getComment_Body(), body + "\n" + e); //$NON-NLS-1$
+				domainProvider.getEditingDomain().getCommandStack().execute(setCommand);
+				return new BasicEList<Element>();
+			}
+		}
+
+		return new BasicEList<Element>();
+	}
+
+	/**
+	 * 7.3.2.2 ElementGroup : /criterion[0..1]: String Specifies the rationale for being member of the group.
+	 * Adding an element to the group asserts that the criterion applies to this element.
+	 * Derived from Comment::body.
+	 * 
+	 * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#getCriterion()
+	 *      <p>
+	 *      See the requirement <b>{@papyrus.req org.eclipse.papyrus.sysml14#Req014}</b>.
+	 * @return
+	 */
+	@Override
+	public String getCriterion() {
+		String criterion = ""; //$NON-NLS-1$
+		Comment comment = getBase_Comment();
+		if (comment != null) {
+			criterion = comment.getBody();
+		}
+		return criterion;
+	}
+
+
+	/**
+	 * 7.3.2.2 ElementGroup : /criterion[0..1]: String Specifies the rationale for being member of the group.
+	 * Adding an element to the group asserts that the criterion applies to this element.
+	 * Derived from Comment::body.
+	 * 
+	 * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#setCriterion(java.lang.String)
+	 *
+	 * @param newCriterion
+	 */
+	public void setCriterion(String newCriterion) {
+		Comment comment = getBase_Comment();
+		if (comment != null) {
+			comment.setBody(newCriterion);
+		}
+	}
+
+	/**
+	 * 
+	 * 7.3.2.2 ElementGroup : /member: Element[0..*] Set specifying the members of the group.
+	 * Derived from Comment::annotatedElement.
+	 * 
+	 * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#getMember()
+	 *
+	 * @return
+	 */
+	@Override
+	public EList<Element> getMember() {
+		BasicEList<Element> elementEList = new BasicEList<>();
+		Comment comment = getBase_Comment();
+		if (comment != null) {
+			elementEList.addAll(comment.getAnnotatedElements());
+		}
+		return new UnmodifiableEList<>(this, ModelElementsPackage.eINSTANCE.getElementGroup_Member(), elementEList.size(), elementEList.toArray());
+	}
+
+	/**
+	 * 7.3.2.2 ElementGroup : /size: Integer Number of members in the group. Derived.
+	 * 
+	 * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#getSize()
+	 *
+	 * @return
+	 */
+	@Override
+	public int getSize() {
+		return getMember().size();
+	}
+}
diff --git a/plugins/extension/elementgroup/pom.xml b/plugins/extension/elementgroup/pom.xml
new file mode 100644
index 0000000..4757618
--- /dev/null
+++ b/plugins/extension/elementgroup/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.papyrus.sysml</groupId>
+		<artifactId>org.eclipse.papyrus.sysml16.extensions</artifactId>
+		<version>2.0.0-SNAPSHOT</version>
+	</parent>
+
+	
+	<artifactId>org.eclipse.papyrus.sysml16.elementgroup.plugins</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<name>Element group SysML Plugins</name>
+	<description>Container of the Element group SysML Plugins</description>
+
+	<modules>
+		<module>org.eclipse.papyrus.sysml16.elementgroup</module>
+		<module>org.eclipse.papyrus.sysml16.elementgroup.ui</module>
+	</modules>
+</project>
diff --git a/plugins/extension/pom.xml b/plugins/extension/pom.xml
index 6ddf716..03dd624 100644
--- a/plugins/extension/pom.xml
+++ b/plugins/extension/pom.xml
@@ -12,5 +12,6 @@
 	<description>The extensions described in the SysML Profile</description>
 	<modules>
 		<module>RequirementsExtension</module>
+		<module>elementgroup</module>
 	</modules>
 </project>
diff --git a/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF b/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF
index c30d680..6d92403 100644
--- a/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF
+++ b/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF
@@ -21,3 +21,4 @@
  org.eclipse.papyrus.emf.facet.efacet.metamodel;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.emf.facet.query.java.metamodel;bundle-version="[2.0.0,3.0.0)"
 Export-Package: org.eclipse.papyrus.sysml16.modelexplorer
+Bundle-Localization: plugin
diff --git a/releng/org.eclipse.papyrus.sysml16.p2/category.xml b/releng/org.eclipse.papyrus.sysml16.p2/category.xml
index 2c87c97..f40ef43 100644
--- a/releng/org.eclipse.papyrus.sysml16.p2/category.xml
+++ b/releng/org.eclipse.papyrus.sysml16.p2/category.xml
@@ -12,6 +12,9 @@
    <feature url="features/org.eclipse.papyrus.sysml16.requirements.extension.feature.source_2.0.0.qualifier.jar" id="org.eclipse.papyrus.sysml16.requirements.extension.feature.source" version="2.0.0.qualifier">
       <category name="org.eclipse.papyrus.category"/>
    </feature>
+   <feature url="features/org.eclipse.papyrus.sysml16.elementgroup.feature_1.0.0.qualifier.jar" id="org.eclipse.papyrus.sysml16.elementgroup.feature" version="1.0.0.qualifier">
+      <category name="org.eclipse.papyrus.category"/>
+   </feature>
    <category-def name="org.eclipse.papyrus.category" label="Papyrus SysML 1.6 Category">
       <description>
          Papyrus SysML 1.6 Category
diff --git a/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product b/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product
index 77499d5..83f9740 100644
--- a/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product
+++ b/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product
@@ -110,6 +110,7 @@
       <feature id="org.eclipse.papyrus.sdk.feature"/>
       <feature id="org.eclipse.papyrus.sysml16.feature"/>
       <feature id="org.eclipse.papyrus.sysml16.rcp.feature"/>
+      <feature id="org.eclipse.papyrus.sysml16.elementgroup.feature"/>
    </features>
 
    <configurations>
@@ -120,14 +121,15 @@
       <plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />
       <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
       <plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" />
-      <property name="osgi.bundles.defaultStartLevel" value="4" />
-      <property name="osgi.instance.area.default" value="@user.home/workspace-papyrus-sysml" />
-      <property name="osgi.requiredJavaVersion" value="11" />
       <property name="org.eclipse.update.reconcile" value="false" />
+      <property name="osgi.bundles.defaultStartLevel" value="4" />
+      <property name="osgi.requiredJavaVersion" value="11" />
+      <property name="osgi.instance.area.default" value="@user.home/workspace-papyrus-sysml" />
    </configurations>
 
    <repositories>
       <repository location="http://https://download.eclipse.org/modeling/mdt/papyrus/updates/releases/2021-03" enabled="true" />
+      <repository location="http://https://download.eclipse.org/modeling/mdt/papyrus/updates/releases/2021-03" enabled="true" />
    </repositories>
 
    <preferencesInfo>
diff --git a/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties b/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties
index ffd40ab..b179f0d 100644
--- a/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties
+++ b/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties
@@ -10,6 +10,6 @@
 # Contributors:
 #     Nicolas FAUVERGUE (CEA LIST) nicolas.fauvergue@cea.fr - Initial API and implementation
 ##################################################################################
-Bundle-Name=Papyrus Sysml 1.6 RCP
+Bundle-Name=Papyrus SysML 1.6 RCP
 Bundle-Vendor=Eclipse Modeling Project
 Bundle-Description=This plug-in contains the information to build the SysML 1.6 Rcp